-
-
[原创]第二题 - TSRC 2017CTF秋季赛
-
发表于:
2017-10-28 15:59
4382
-
[原创]第二题 - TSRC 2017CTF秋季赛
前言:本人小白,做出此题,其实还是有些迷糊,没有完全清楚,欢迎各位大侠指正。(哪位大佬指点下啥叫fpc..TAT)
思路:
1.首先测试软件,没有发现啥特别的地方....
2.打开IDA看代码逻辑,天真的以为很简单:
两个方程组:
一开始以为逻辑很简单,输入8个字符,就两组方程,但是其实只有两个变量v0和v1,经过测试发现,这个两组方程是不可能同时成立的,在这上面我花费了巨量的时间,去找,去遍历,还考虑溢出,正负还有补码之类的。其实思路错了,一开始没有常规的字符串长度校验,直接取了前8个字符,就应该考虑栈溢出(好吧,其实,在一开始直接尝试输入很多1会报错,就该考虑栈溢出的问题。我是老实的新人,学到了,下次就会了)
正确的思路:
3. 先看一下输入函数sub_401050的栈: 测试输入‘12345678’
可以看到esp是0x18FF34这个地址,输入从0x18FF3C处写入,输入函数返回时,进行add esp,14h操作释放栈空间,esp(0x18FF48)指向返回地址(即main函数中,call sub_401090指令地址),那我们的栈溢出则应该写入12个字符后面加上想要跳转的地址覆盖掉原始的返回地址。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)