思路:同[GKCTF2020]Backdoor
先进行公钥解析得到 n e
分解n得 p q factordb
根据p q e得到d
最后用公钥加密的密文 和 私钥解密
rsa.PrivateKey(n,e,d,q,p) 私钥包含(n,e,d,p,q)
rsa.decrypt(f,key) f:公钥加密结果 key:私钥
最后脚本:
from Crypto.Util.number import *
from Crypto.PublicKey import RSA
import gmpy2,binascii
import base64
import rsa
# 从公钥里面提取n 和 e
with open('./pub.key','r') as f:
key = RSA.import_key(f.read())
e = key.e
n = key.n
print('e = %d\nn = %d'%(e,n))
# p q e 得 d
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
phi = (p-1)*(q-1)
d = inverse(e,phi)
print('d =',d)
key = rsa.PrivateKey(n,e,d,q,p)
with open("flag.enc.txt","rb") as f:
f = f.read()
print(rsa.decrypt(f,key))
#e = 65537
#n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
#d = 81176168860169991027846870170527607562179635470395365333547868786951080991441
#b'flag{decrypt_256}\n'