下載附件後給了兩個文件,一個flag.enc,一個pub.key(感受更像密碼學的題!)php
用記事本打開pub.key發現有段base64的編碼,解碼後仍是意義不明,但能夠發現python
這種形式很像.pem的格式(PEM是OpenSSL和許多其餘ssl工具的標準格式,OpenSSL使用PEM文件格式存儲證書和密鑰)工具
將pub.key後綴改成.pem,和flag.enc一塊兒放入kali中,接下來編碼
①使用openssl命令spa
openssl rsa -pubin -text -modulus -in warmup -in pub.pem
獲得code
②其中的Moudulus即爲n,e爲65537,而後求解p和qblog
有如下三種方法:ip
1). 使用在線工具http://www.factordb.com ssl
2). 使用yafu工具(需下載)get
3). 使用python模塊(需安裝, pip3 install factordb-pycli)
from factordb.factordb import FactorDB factor=FactorDB(N) factor.connect() factor_list=factor.get_factor_list() #factor_list即爲分解出的質數集合的表
③使用rsatool得出私鑰,使用命令
python rsatool.py -o private.pem -e 65537 -p 285960468890451637935629440372639283459 -q 304008741604601924494328155975272418463
會發現文件中多出一個private.pem文件
④把private.pem和flag.enc放在同一文件夾中,使用命令
openssl rsautl -decrypt -in flag.enc -inkey private.pem
得出最終的flag!!!