-
-
[原创]2017CTF秋季赛 第二题 ctf2017_Fpc 解题报告
-
发表于:
2017-10-27 22:48
3567
-
[原创]2017CTF秋季赛 第二题 ctf2017_Fpc 解题报告
题目乍看起来是这个流程:
其实这是作者的坑,此题是无解的方程
当我测试输入字符串个数的时候,输入 12 个字符时,程序又从头执行了
原因是:12 个字符后的 '\0' 覆盖了返回地址,使其变成 0x401000 从头开始了
我想:既然程序有判断 [0x41B034] 这个地方的值来作为成功标志,是不是能用 线索1 修改到别的流程上更改这个地方的值呢
IDA bytes 搜索 34 b0 41 00
(0x41B034 地址,查看有没有指令有关)
IDA 做微量指令修复时,要关掉这2个地方减少 IDA 智能分析的影响
修复第一处指令,发现这个混淆经过了很多跳转
顺着来源跳转向上一路修复,找到根源
因为这里没有来源跳转,并且 add esp, 0FFFFFFF0h
非常重要,后文的调试中,大家会发现,与 pop eax
组合,能取出输出的 12 个字符
综合以上,剩下的就要调试了
输入 11113333777711A
,前面 12个字符取这个,调试时运算比较明显,最后的 11A\0
就是地址 0x00413131 “根源”
很容易调试出如下方程:
解得:
转换成字符串后为题解
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课