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

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

2017-6-20 19:42
7803

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

见后面。


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

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

a82K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4L8i4m8D9K9h3u0Q4x3X3g2G2M7X3N6Q4x3V1k6Y4L8i4m8Q4x3X3c8E0j5h3&6Q4x3X3b7$3i4K6u0W2x3g2)9J5k6e0u0Q4x3X3g2H3k6r3j5`.

发现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:

baeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6W2L8W2)9J5k6i4N6A6K9$3W2H3k6h3c8A6j5g2)9J5k6h3!0J5k6#2)9J5c8Y4N6A6K9$3W2Q4x3V1k6i4K9h3g2F1k6i4u0Q4x3U0k6Q4x3U0x3K6z5g2)9K6b7Y4y4Q4y4h3k6S2N6s2c8S2j5$3D9`.


python 代码, g到一份如下:

3dfK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6H3j5h3u0D9L8$3y4W2L8r3q4&6k6i4y4Q4x3V1k6J5M7$3q4Q4x3X3c8%4K9h3g2F1k6i4u0Q4x3X3c8S2N6s2c8S2j5$3D9`.


结合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

77bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4c8G2L8$3I4K6i4K6u0W2M7r3g2V1K9i4W2Q4x3X3g2U0L8$3#2Q4x3V1k6%4K9h3&6V1L8%4N6K6i4K6u0r3b7%4u0&6M7s2c8G2k6%4u0S2M7r3S2&6i4K6u0r3j5$3q4D9j5%4g2D9j5i4c8G2M7W2)9J5c8Y4u0V1L8s2m8Q4x3V1k6d9c8p5I4b7i4K6u0W2M7X3q4J5

方法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


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

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

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

第一步:


第二步:

就这样秒了

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