首页
社区
课程
招聘
[原创]看雪CTF2017 第十题 CM逆向分析
发表于: 2017-6-20 21:34 4411

[原创]看雪CTF2017 第十题 CM逆向分析

2017-6-20 21:34
4411

又是大数运算,IDA打开:

F5,好直观:

查找字符串:

有PEID和上边的字符串信息可知,是用GMP实现的大数运算,接着就是猜每个函数的意义了。

有MPN的官方文档可知:

1.所有对象使用前要初始化,通过调用函数 mpz_init来完成

2.一般的函数,第一个参数为输出函数,后边的为输入参数

刚开始,使用的默认值来计算,进展缓慢,后来把mpn_set_str_140007990 处的大数改成0x10之后,进展飞快。

完整函数如上,流程如下:

结构体定义:

初始化前6个字符的例子:

内存中,rcx地址的值:

运行之后:

6.判断是否为素数

这里花了点时间,后来通过连续测试0-0x10基本可以确定是判断素数。

跟官方文档似乎不太一样。

7.初始化几个值

8.用大数0x62..... 模上我们输入的64位然后与0比较:

9.用大数0x62..... 除以我们输入的64位然后与商做比较,商大于我们输入的数:

10.最后一段,p=input[6:64] 商q=big_1/p  v8=(p-1)(q-1)

有了以上信息,结合上一题的坑,基本猜到是RSA,不然还能有啥。。。。。。。。

RSA 算法:

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//