首页
社区
课程
招聘
[原创]CTF2017 第二题 ctf2017_Fpc writeup
发表于: 2017-10-27 12:47 3095

[原创]CTF2017 第二题 ctf2017_Fpc writeup

2017-10-27 12:47
3095

Just0for0fun


个人感觉这题需要一点猜迷成分……先说错误解好了


所以目测是需要过两个check,check1, check2. get_input 会把输入存到栈上,这里有个scanf的溢出之后正确解会用到


check1

直接z3就可解出解 v1 = 0x6f503a42, v2 = 0xcf503a42,但因为是二元一次方程,所以只有一个唯一解

check2

同理,z3可解得 v1 = 0xb3a94883, v2 = 0x73a94883,同上,也是唯一解

这下问题就来了……由于我们输入只有一次,所以check1和check2必须同时过才行,但是check1和check2的解不一样,所以我们无法达成两个都满足的条件,加上两组解都不是完全在可打印字符串内,说明这两个函数是坑,此题有别的解法……

下面说正确解,回到IDA的hex view,往下滚,发现有很大一部分的.text 没有用到,这就让人感觉很奇怪,跳到第一个没有用到的并且不是0的命令c一下,发现是ret,紧跟着是add esp,0xfffffff0h

之后的两个指令很有意思,不管OF是什么状态我们一定会跟着其中一个走,手动双击几回,我们会发现
jo这个分叉会走 0x413160->0x41314d->0x413165->0x413146->0x413150 (途中会有多个jo指令)
jno这个分叉会走 0x413158->0x413141->0x413149->0x41313c->0x41315a->0x413150 (途中会有多个jno指令)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
  • 2.py (0.72kb,27次下载)
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//