一、题目
给了如下两个文件
二、解题
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_bytesp = 274539690398523616505159415195049044439
q = 322368694010594584041053487661458382819
n = 88503001447845031603457048661635807319447136634748350130947825183012205093541
c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
e = 65537phi = (p-1)*(q-1)
d = inverse(e,phi)
m = pow(c,d,n)
flag = long_to_bytes(m)
print(flag)
答案:HSCTF{@Zh3n_Ba1_G3i!@}