XCTF Normal_RSA WP
阿新 • • 發佈:2020-12-23
得到的附件為如圖:
.pem為存放金鑰的檔案,.enc為加密檔案
使用
openssl rsa -text -modulus -pubin -in pubkey.pem
得到n後使用factordb
分解得到p和q.
在進行正常的RSA操作。
並利用crypto庫中的構造輸出金鑰的方法,輸出對應的privatekey.pem
實現過程的指令碼 如下:
import gmpy2
from Crypto.PublicKey import RSA
p=gmpy2.mpz(275127860351348928173285174381581152299 )
q=gmpy2.mpz(319576316814478949870590164193048041239)
n=gmpy2.mpz(87924348264132406875276140514499937145050893665602592992418171647042491658461)
e=65537
fai=(p-1)*(q-1)
print(p*q)
d=gmpy2.invert(e,fai)
print(d)
p=275127860351348928173285174381581152299
q=319576316814478949870590164193048041239
fai=(p-1)*(q-1)
n= 87924348264132406875276140514499937145050893665602592992418171647042491658461
d=10866948760844599168252082612378495977388271279679231539839049698621994994673
privatekey=RSA.construct((n,e,d,p,q))
Key=privatekey.export_key()
with open('prikey.pem','wb') as fp:
fp.write(Key)
得到解密金鑰後,再一次使用openssl庫,進行解密。
使用命令
openssl reautl -decrypt -in flag.enc -inkey -private.key
得到明文flag.
使用RSATools可以更快解決,以後會繼續研究RSATools的基本方法。