题目来源: PCTF
题目描述: 你和小鱼走啊走走啊走,走到下一个题目一看你又一愣,怎么还是一个数学题啊 小鱼又一笑,hhhh数学在密码学里面很重要的!现在知道吃亏了吧!你哼一声不服气,我知道数学 很重要了!但是工具也很重要的,你看我拿工具把他解出来!你打开电脑折腾了一会还真的把答案 做了出来,小鱼有些吃惊,向你投过来一个赞叹的目光
附件下载下来又是一阵懵逼,一个enc文件,一个是pem文件,根据名字可以猜到一个是flag的密文, 一个是公钥(pubkey),但是这两种文件格式咱都没见过啊。。
flag.enc打不开,pubkey.pem倒是可以打开,里面也明确写了这是个public key,而且中间有一段base64的编码
但是解码出来也是意义不明的乱码
于是百度之
这个时候度娘就开始误导我了
误导1:
神™midi乐谱文件。。。
误导2:
误导2让我去下了一个神盾xxxx的软件,下载下来之后发现这玩意貌似只能生成一个加密的磁盘分区,于是又去百度pem是啥,这次度娘终于靠谱了 :
于是去下了个openssl,然后从pubkey.pem中提取信息 :
里面Modulus就是N,Exponent就是e
这里显示:
Modulus(hex)
=C2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD
明显是个16进制数,先转换成10进制的
Modulus(dec)
=87924348264132406875276140514499937145050893665602592992418171647042491658461
对其在线质因数分解,得到p、q
所以现在知道了:
p=275127860351348928173285174381581152299
q=319576316814478949870590164193048041239
e=65537
然后,事情就陷入了僵局。。之后看了一下writeup,
发现是用了一个叫rsatool的工具,可以由p、q、e计算d,并生成pem文件
然后就是想办法去安装rsatool,但是发现安装它还需要安俩东西,pyasn1和gmpy,其中pyasn1顺利安上了,但是gmpy死活安不上,鼓捣了3个晚上,发现貌似是gmpy太老了,不兼容现在的各种东西,但是好像在kali上能装成,于是按照教程,成功在kali上装上了
然后按照用法,把pubkey.pem和rsatool.py放一块,从终端输入命令:
1 | python |
成功生成private.pem文件 :
然后把private.pem拖回Windows,和pubkey.pem、flag.enc放一个文件夹里,打开cmder,使用openssl用private.pem解密flag.enc文件并将明文生成txt文件
输入命令:
1 | rsautl -decrypt -in flag.enc -inkey private.pem -out flag.txt |
成功生成flag.txt :
打开,得到flag :
收获:
Kali牛逼!