-
-
[原创]CTF第一题解题思路
-
发表于: 2019-6-10 14:31 1964
-
0)输入内容为123456
1)经过分析cmp指令,确定最后3位为xxx353,且长度小于7
2)前3位数字的ASCII加起来必须是0x95, 如果前面3位是123,ASCII的相加结果是0x96,因此改成023即可
3)难点在第三步这里,分析代码发现后面有个div除法指令在try catch语句里面,并且走向成功的分支在 except里面,说明只要div发生除0异常,就会走到正确的代码分支。
下图中为每个字符计算一遍,并将最终结果保存到ESI寄存器中
随后又通过getPC,获取当前执行指令地址,放到EAX中
再将EAX的值与ESI相减,结果保存到ESI中。
也就是说如果刚才ESI的结果刚好是当前指令的地址,这里相减的结果就是0,这样就会发生除0异常,走向success分支
通过动态调试发现,这里getpc获取的指令地址,刚好是0x401353,
401的ASCII加起来正好是0x95
353也刚好命中前面的3个固定判断
因此输入0x401353,即可满足前面的长度以及末尾3个字符的判断。
后面经过计算又可满足除0产生的异常,最终走向success代码块
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: