首页
社区
课程
招聘
[原创]CTF第一题解题思路
2019-6-10 14:31 1456

[原创]CTF第一题解题思路

2019-6-10 14:31
1456




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代码块





[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

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