天天看点

BUUCTF Reverse RSA

BUUCTF Reverse RSA

一天一道CTF,能多不能少

下载文件打开~

发现存在两个文件!!

BUUCTF Reverse RSA

不用说,flag.enc肯定是加密后的,就不用看了,直接看pub.key,内容如下:

-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+
/AvKr1rzQczdAgMBAAE=
-----END PUBLIC KEY-----
           

RSA的一个公钥???貌似是的!

直接利用在线工具分解公钥得到n和e:

BUUCTF Reverse RSA

ok得到了n,那就可以分解n得到p和q了~~

利用yafu这个工具进行分解,得到p,q:

BUUCTF Reverse RSA

得到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())
           

得到:

BUUCTF Reverse RSA

flag:

flag{decrypt_256}

总结:

更深入的了解了RSA算法的奥秘~

同时也学会了yafu工具的使用,私钥生成函数的使用

利用rsa模块和gmpy2模块对RSA进行解密~

过程虽有坎坷,但还是能够跨越过去的!!!