BUUCTF Reverse RSA
一天一道CTF,能多不能少
下载文件打开~
发现存在两个文件!!
不用说,flag.enc肯定是加密后的,就不用看了,直接看pub.key,内容如下:
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+
/AvKr1rzQczdAgMBAAE=
-----END PUBLIC KEY-----
RSA的一个公钥???貌似是的!
直接利用在线工具分解公钥得到n和e:
ok得到了n,那就可以分解n得到p和q了~~
利用yafu这个工具进行分解,得到p,q:
得到pq就好办了~
直接计算d,然后利用rsa模块生成私钥~
然后就可以直接对文件进行解密了~
import hashlib
import gmpy2
import rsa
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
d = gmpy2.invert(e,(q-1)*(p-1))
print(d)
d = 81176168860169991027846870170527607562179635470395365333547868786951080991441
key = rsa.PrivateKey(n,e,d,p,q)
print(key)
with open("output\\flag.enc","rb") as f:
print(rsa.decrypt(f.read(),key).decode())
得到:
flag:
flag{decrypt_256}
总结:
更深入的了解了RSA算法的奥秘~
同时也学会了yafu工具的使用,私钥生成函数的使用
利用rsa模块和gmpy2模块对RSA进行解密~
过程虽有坎坷,但还是能够跨越过去的!!!