首页
社区
课程
招聘
[原创]ctf2017_Fpc_writeup
2017-10-28 00:56 2208

[原创]ctf2017_Fpc_writeup

2017-10-28 00:56
2208

卡在sub_401090和sub_4010E0一天了,心里简直怀疑人生——写在前头

 

睡了一觉,发现0x413131处一段数据很可疑,而且在 scanf 函数输入的数值可以覆盖到返回地址。遂输入11111111111111A跟进。

 

发现此处是各种跳转指令,中间将输入的字符分别赋值给 ecx ebx edx三个寄存器。

 

具体操作整理得出:

eax = ecx 
eax -= ebx
eax << 2
eax += ecx
eax += edx
eax = 0xEAF917E2

eax = ecx
eax -= ebx
ebx = eax
eax << 1
eax += ebx
eax += ecx
ecx = eax
eax += edx
eax = 0xE8F508C8

eax = ecx
eax -= edx
eax = 0x0C0A3C68

可以列出三元一次方程组:

x = ecx
y = ebx
z = edx

((x - y) << 2) + x + z = 0xEAF917E2
((x - y) << 1) + (x - y) + x + z = 0xE8F508C8
((x - y) << 1) + (x - y) + x - z = 0x0C0A3C68

解得:

--> x = 0x7473754a
--> y = 0x726f6630
--> z = 0x6E756630

key:Just0for0fun11A

z3一直装不上,也是玄学了23333


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回