攻防世界-baigeiRSA

一、题目

给了如下两个文件

二、解题

1、查看代码发现就是简单的RSA加密算法,仔细分析一下发现flag就是明文,而要获得flag就要解密密文,但是代码中只提供了e。

于是又去out文件翻了一下,常使用记事本打开,发现n和c已经给出,由于n的位数只有78个字符,可以尝试暴力分解因数

2、分解因数(这里提供两种方式)
①在线网站http://www.factordb.com/

分解得到两个39位的的因数,应该就是p和q

②看了wp才发现还有一个专门用于因数分解的工具 yafu<<可以点击这里下载>
使用方法如下:

参考文章:https://blog.csdn.net/beizishaizi/article/details/128601121

3、获取到p和q之后
就可以求解逆元d,用相应的算法来解密得到flag即可

三、解题代码与答案

from Crypto.Util import number
from Crypto.Util.number import inverse,long_to_bytes

p = 274539690398523616505159415195049044439
q = 322368694010594584041053487661458382819
n = 88503001447845031603457048661635807319447136634748350130947825183012205093541
c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
e = 65537

phi = (p-1)*(q-1)
d = inverse(e,phi)
m = pow(c,d,n)
flag = long_to_bytes(m)
print(flag)

答案:HSCTF{@Zh3n_Ba1_G3i!@}

posted @ 2024-12-01 18:16  wyuu101  阅读(21)  评论(0编辑  收藏  举报