首页
社区
课程
招聘
[原创]看雪CTF2017第10题分析
发表于: 2017-6-20 19:42 7564

[原创]看雪CTF2017第10题分析

2017-6-20 19:42
7564

1.  IDA 反编译后结果如下代码。

见后面。


2.  分析发现使用了gmp运算库,做了sig 加载, 但是在main里,大部分不识别。

于是打开gmp文档, 结合文档,推断函数功能, 确定了大部分的函数:

https://gmplib.org/gmp-man-6.1.2.pdf

发现2个大数,记为 N, E , 根据经验推理出大概的函数流程。考虑到可能采用RSA,

但是推理过程并未发现PowMod运算。考虑可能是取模 or 求商。


S1 + S2  一共70 bytes的 大写 Hex-Digits。

其中 S1  6 bytes, S2 64bytes。 S2恰好为N 长度的一半, 不妨记录为P。

要求 :   N /P = Q, 并且S2是其中小的因子,  P < Q 。

然后求得 Phi = (P - 1) * (Q - 1)

最后求  E模Phi 的逆 ,与 S1进行比较相等, 也就是   S1 * E = 1  mod (Phi)


3. 那么,结论就是

根据 E,N 求出 D, P  。  在RSA参数(N, E,  D ) 中, 已知大指数E, 针对小指数D的攻击至少有两种方法。

方法1:

Wiener's attack  通用方法, 针对  D < N^0.25

该算法原理参考wiki:

https://en.wikipedia.org/wiki/Wiener's_attack


python 代码, g到一份如下:

https://github.com/pablocelayes/rsa-wiener-attack


结合Wiener's_attack , 得到 D 。然后 通过 (N , E, D)来计算 P , Q。


特别说明:  RDLP有这个功能, 只要把N , E填入, 点击 WIENER , 即可计算出 D 以及 P ,Q。

RDLP: RSA, Rabin, DSA/DSS Keygenerator and DLP Tool

参考:RDLP-Readme.txt 在压缩包RDLP.rar内

http://bbs.pediy.com/thread-66678.htm

http://tools.pediy.com/windows/Cryptography/calculator/rdlp/RDLP.rar

方法2:

考虑到小指数   d很小, E,N已知。   令 y = 2 , c = y^e mod N ,  建立一个离散对数方程来求解d:

这里:

c= 17E73D7E3DCD777132626E613037545FCCDE058B667FF426A196093C98CF43017AF53EB957D9C
997411A1E4DD376B3AFE445567E294CD45DCB59FC3964C75E4A

n= 6248BC3AB92A33B000FDB88568F19727F92F79EB68FF6AD73203EFD20A3E331BE941C7AA28809
5F33BC4B255FD983114D480EFFBEE2E313E6218A57F9CCC8189
y= 2

建立离散对数方程:

c^d = y  mod n


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
2
太牛逼了。
2017-6-21 12:34
0
雪    币: 1847
活跃值: (1806)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
3
哇……原来工具可以直接解
2017-6-21 13:43
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
其他几位是穷举,readyu直接得到答案了,厉害!
2017-6-21 16:55
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
5

我来演示一下楼主的强大工具,特意找了个2007年旧版的

第一步:


第二步:

就这样秒了

2017-6-22 17:21
0
游客
登录 | 注册 方可回帖
返回
//