首页
社区
课程
招聘
[原创]CTF2018第四题分析(qwertyaa)
发表于: 2018-6-22 15:59 3193

[原创]CTF2018第四题分析(qwertyaa)

2018-6-22 15:59
3193

终于抢到一血了耶...(^_^)

拿到CM拖入IDA看到的第一眼就是指令太花,而且这个花似乎是在向去年秋季赛第二题致敬(没记错的话,连花指令的起始地址都是一样的...)
结果好多函数 F5 不能正常工作...
其实没多大关系,除了主程序以外其他地方都是插入了统一格式的花指令:

CALL A
B: JMP C
A: CALL B
C: ADD ESP,0x8
D: 后续代码

直接把第一处CALL A改成JMP D,然后用 U 和 E 键手动调整下函数范围,这样 IDA 就可以识别出来了。

通过结合 IDA 分析和 OD 调试,我们可以大概知道main做了这些事:

另外通过一定的猜测,我们可以得到这些信息(不确定,可能具有迷惑性):

然后我们来到0x40125D处,用调试跟踪几次就可以确定是在干嘛。(比如将密钥内容改为00,发现最后比较的内容也变成了00,可以猜测这是做了幂运算的底数。)

这个函数首先动态解密了两个长字符串,将他们拉出来:

M =
0019FDE4 32 30 38 43 42 42 37 43 44 36 45 43 43 36 34 35 208CBB7CD6ECC645
0019FDF4 31 36 44 30 37 44 39 37 38 46 35 46 30 36 38 31 16D07D978F5F0681
0019FE04 46 35 33 34 45 41 44 32 33 35 44 35 43 34 39 41 F534EAD235D5C49A
0019FE14 44 44 37 32 44 32 44 42 38 34 30 44 35 33 30 34 DD72D2DB840D5304

N =
0019FB8C 37 64 61 33 39 64 65 36 36 30 31 36 34 37 37 62 7da39de66016477b
0019FB9C 31 61 66 63 33 64 63 38 65 33 30 39 64 63 34 32 1afc3dc8e309dc42
0019FBAC 39 62 35 64 65 38 35 35 66 30 64 36 31 36 64 32 9b5de855f0d616d2
0019FBBC 32 35 62 35 37 30 62 36 38 62 38 38 61 35 38 35 25b570b68b88a585

然后程序将N3e9也就是十进制下1001,和输入密钥的hex值分别调用特定函数构造出大整数结构,然后将他们传入一个函数中(由1001和其他一系列特征我们不难猜出这里进行的是modPow),最后将返回值从大整数结构中提取出来并转化为16进制值并与M比对,函数具体内容如下:

上述过程其实就是判断下面这个式子是否成立:

M == INPUT^E (mod N) 其中E=1001

不难想到这是在使用RSA算法进行公钥加密,N既然是作者给的,应该不会很强,于是我想着应该可以暴力破解。
当然,这里为了实现10进制和16进制转换,我敲了个Java小程序:

我使用 Mathematica 的EulerPhi函数死活算不出来结果,但我后来找到了一个叫factordb.com的网站,可以很方便的查询一些大整数分解的结果(包括作者给的这个N的分解)。

然后我也懒得上程序了,直接敲一段 Mathematica 命令。
我们将分解出来的两个因数记为PQ
那么我们的INPUT内容可由(由于DN是 Mathematica 的函数,我这里统一用小写变量)

得到。具体原因可查阅有关这一算法的书籍,比如算法导论第31章。

将得到结果放到我们前面提到的Java程序中,并将得到结果用 php 的hex2bin函数解码,得到这一部分的密钥为iamahandsomeguyhaha1

接下来继续分析有关检验前三个数字的代码?不了,这段代码除了看得头疼外,作者似乎还加入了随着CM是否检测到被调试而决定的是否更改其最终要求的密钥等机制,很是复杂。
但是这一段代码执行的挺快,连个Sleep都没有,可能数又只有1000种,妥妥的算设计失误(当然如果CM作者没有一点故意的设计失误,一个随便加上强密的CM怎么可能被我等破解呢?)。
于是我敲了一段批处理:

闭眼休息一会儿后成功得到flag:520iamahandsomeguyhaha1

 
 
 
 

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

最后于 2018-6-23 00:59 被qwertyaa编辑 ,原因: 校对
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//