Normal_RSA

题目来源: 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
2
3
python
rsatool.py -f PEM -o private.pem -p 275127860351348928173285174381581152299 -q
319576316814478949870590164193048041239 -e 65537

成功生成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牛逼!

-------------本文结束感谢阅读-------------
谢谢你请我吃糖果= ̄ω ̄=