首页
社区
课程
招聘
[原创]第二题解题过程
发表于: 2017-10-27 21:22 2933

[原创]第二题解题过程

2017-10-27 21:22
2933

1.正常流程跟踪,发现有个全局变量置为2,然后后面有两个函数,每个符合下面的条件的话,就能每次减1;


5 * (v1 - v0) + v1 == 0x8F503A42 3 

13 * (v1 - v0) + v0 == 0xEF503A42 4

17 * (v1 - v0) + v1 == 0xF3A94883 1

 7 * (v1 - v0) + v0 == 0x33A94883 2




4-3得到 

 7 * (v1 - v0) = 0x60000000 

带入计算发现低3个字节必须相等为 503A42

 1-2得到 

11 * (v1 - v0) = 0xC0000000 

 0xB * (v1 - v0) = 0x2C0 00 00 00


带入计算发现低3个字节必须相等为 50 A94883


因此,暴力神马的对于此题无效。这是一条思路。

测试的时候我们发现输入比较长的字符串会死掉,od跟了下就会发现有堆栈溢出,我们可以控制返回地址。

那么直接调用下面的地址( 0040102F )就可以了。

0040102F 68 5CB04100 push 0041B05C ; you get it!\n 

00401034 E8 092D0100 call 00413D42 ;

00401039 83C4 04 add esp, 4 

0040103C 33C0 xor eax, eax

由于没有仔细看说明,陷入了一个误区,第一题太简单了,没把第二题想复杂。

于是输入 "111122223333/^P@", /P 是0x10,(覆盖了返回地址为0x40101F),就能在输入框成功得到正确提示。(然而无法正确提交,还发了个求助帖,进群了才看到要求,哎!!!)

小插曲,接下来就来到一个特殊的返回地址了。


最后么,抱着试一试的态度,


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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