学习资料:
视频:https://v.qq.com/x/page/q0149qijxa5.html
freebuf:http://www.freebuf.com/articles/others-articles/166049.html
题目:http://www.shiyanbar.com/ctf/1772
1.下载附件
先放入winhex中,发现是个压缩文件
改后缀名,解压
得到
2.直接拖到kali里去(要安装增强工具VMtools),在文件夹打开终端
3.openssl
输入openssl
再输入命令:
rsa -pubin -text -modulus -in public.pem
分析
public.pem
中的信息。Modulus即为n:0xA41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7
(十进制:74207624142945242263057035287110983967646020057307828709587969646701361764263)
Exponent即为e:0x10001(十进制:65537)
由n可以求出q,p:
p: 258631601377848992211685134376492365269
q: 286924040788547268861394901519826758027
4,求d
使用工具,输入n,q,p,e
,求出d
:
工具分享:https://pan.baidu.com/s/1EX-rneQQF7C6_hAhLhVSnA
密码:vstf
5.解密
winhex打开flag.enc文件,获取16进制值
得:
\x49\xB9\x6E\xDB\xE3\x96\x1F\x58\xD5\x29\x07\x4B\xD8\x93\xD6\xE0\x36\xCE\xAF\x2B\x6D\x21\x4B\x47\x0F\xDC\x0D\x48\x72\x3D\x6A\x40
上代码,RSA模块解密(因为RSA模块改变了不少,自己看别人的writen up,摸索出来)
import rsa
#rsa.PrivateKey(n,e,d,p,q)
n=74207624142945242263057035287110983967646020057307828709587969646701361764263
e=65537
d=23071769375111040425287244625328797615295772814180109366784249976498215494337
p=258631601377848992211685134376492365269
q=286924040788547268861394901519826758027
prikey = rsa.PrivateKey(n,e,d,p,q)
#print(prikey)
t = rsa.decrypt(b'\x49\xB9\x6E\xDB\xE3\x96\x1F\x58\xD5\x29\x07\x4B\xD8\x93\xD6\xE0\x36\xCE\xAF\x2B\x6D\x21\x4B\x47\x0F\xDC\x0D\x48\x72\x3D\x6A\x40', prikey)
print(t)
总算解决了,不懂RSA的同学可以看看页首的资料。