攻防世界-Normal_RSA

管理员 2020-07-11 PM 474℃ 0条

这题是关于RSA解密相关的,下载题目文件后压缩包里有两个文件,分别是公钥和加密的文件,我们的思路就是通过公钥爆破出私钥,再根据私钥解密出密文

其中 .pem格式的是openssl的文件类型,所以我们需要用到openssl来解出RSA中的N 值与 e值,这个过程完全是可计算的,并不是爆破,毕竟传统的rsa公钥是(e,N)的形式,这里只是通过openssl把他格式化了一下

kali自带有openssl,可在 pubkey.pem的当前目录运行一下命令解出N值与e值

openssl rsa -pubin -text -modulus  -in pubkey.pem

运行效果如下:

root@kali:~/CTF/openssl# ls
pubkey.pem
root@kali:~/CTF/openssl# openssl rsa -pubin -text -modulus  -in pubkey.pem
RSA Public-Key: (256 bit)
Modulus:
    00:c2:63:6a:e5:c3:d8:e4:3f:fb:97:ab:09:02:8f:
    1a:ac:6c:0b:f6:cd:3d:70:eb:ca:28:1b:ff:e9:7f:
    be:30:dd
Exponent: 65537 (0x10001)
Modulus=C2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD
writing RSA key
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMJjauXD2OQ/+5erCQKPGqxsC/bNPXDr
yigb/+l/vjDdAgMBAAE=
-----END PUBLIC KEY-----

或者可以使用在线工具计算,http://tool.chacuo.net/cryptrsakeyparse

其中 "65537"就是 e值,而 "C2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD" 是16进制的N值,我们需要把它转为10进制,我个人比较喜欢用python

root@kali:~/CTF/openssl# python3
Python 3.8.3 (default, May 14 2020, 11:03:12) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> int(0xC2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD)
87924348264132406875276140514499937145050893665602592992418171647042491658461
>>> 

这就计算出了N值,这时候我们需要通过类似爆破的方式来计算 p值与q值,可以用过在线网站进行计算,网址:http://www.factordb.com/index.php,下面是解密结果:

下面我们就可以根据rsa加密的原理进行计算出密钥,使用到的一个工具是rsatool,安装方法:

git clone https://github.com/ius/rsatool.git
cd rsatool  //进入这个目录
python setup.py install

然后可以使用下面的命令生成密钥文件:

python rsatool.py -o private.pem -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239 -e 65537

运行完成后即可在目录下生成一个私钥文件 private.pem,将 private.pem 与 flag.enc 放在同一个目录下,然后运行openssl解密,计算出 加密的明文信息

openssl rsautl -decrypt -in flag.enc -inkey private.pem

下面是运行效果:

root@kali:~/CTF/openssl# ls
flag.enc  private.pem
root@kali:~/CTF/openssl# openssl rsautl -decrypt -in flag.enc -inkey private.pem
PCTF{256b_i5_m3dium}
root@kali:~/CTF/openssl#

可以看到加密后的信息被解密出来了

标签: rsa

非特殊说明,本博所有文章均为博主原创。

评论啦~