题目名称:RSA256
题目描述:
被潘汉年按时来到上海百老汇大厦(今上海大厦),叩开了袁殊临时下榻处的房门。袁殊说明自己当前身份和处境后,突然话锋一转,问潘汉年:“你到我这里来,恐怕已经被日本特务注意到了。我应该怎么向他们解释呢?”潘汉年说:“你就将计就计在敌伪内部站住脚,取得合法地位。同时搜集敌伪情报向我提供。”“要是岩井要求我将你介绍给他怎么办?”“那我就用胡越明的化名同岩井见面,就说我愿意和你在香港合作搞情报。”时隔不久,潘汉年接到袁殊通知,通知内容为:RSA256.tar.gz,要他在上海虹口区一家日本人开的餐馆里,和岩井会见。 请以暗号形式告知我方人员前往保护潘汉年的安全。(答案为flag{XXX}形式)
题目附件:附件1
WriteUp:
解题思路:
下载附件,解压得到RSA256文件夹,里面有两个文件fllllllag.txt和gy.key
给出了公钥文件gy.key和密文文件fllllllag.txt,就是常规的RSA解密,有多种方法
方法一:利用RsaCtfTool工具(kali虚拟机中)
已知公钥(自动求私钥)—publickey,密文—uncipherfile
命令:python3 RsaCtfTool.py --publickey 公钥文件 --uncipherfile 加密的文件
直接解出明文
方法二:利用公钥文件用openssl工具解出e、n,然后python3脚本解出明文
1、解出e、n
方式1:
打开kali虚拟机,用openssl解出e、n
命令:openssl rsa -pubin -text -modulus -in warmup -in gy.key
方式2:
用脚本从公钥文件中解出n、e
1 | # -*- coding: cp936 -*- |
运行结果
2、e为65537,n还比较短,用python先转换成10进制
对n进行因数分解
方式1:登录网站http://factordb.com/,解出p和q
方式2:使用yafu工具
(常用于比较大的整数分解)自动整数因式分解,在RSA中,当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值!
用法:
到此,已经获取到RSA的全部参数
p = 273821108020968288372911424519201044333
q = 280385007186315115828483000867559983517
n=76775333340223961139427050707840417811156978085146970312315886671546666259161
e=65537
3、使用python3代码解出明文
1 | # -*- coding: cp936 -*- |
运行结果如下:
可以看出flag字符串16进制标识,直接base16解码得到flag:
flag{_2o!9_CTF_ECUN_}
提交时需要去掉_(真坑)