-
-
[原创]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虚拟机自动化脱壳的方法
赞赏
看原图