-
-
CTF第二题
-
发表于: 2017-10-28 02:24 2904
-
这个题出的很有意思,也挖了个大坑。涉及到栈溢出和代码混淆。
首先找到_main,初看发现结构很简单。输入字符串,进行两个函数判断,同时判对如果符合即输出“You get it!”。
但是仔细思考后发现想解出符合一个函数的两个Dword都很难,别说两个判断函数sub_401090和sub_4010E0同时都判对,开始考虑到可能产生进位溢出,无法用二元一次方程原理思考,所以写函数进行爆破,尽管将输入字符取值范围限制在“0-9a-zA-Z”,仍然无法爆破,一方面轮训完时间太久,二是可能不存在符合这两个函数的数值。
首先找到_main,初看发现结构很简单。输入字符串,进行两个函数判断,同时判对如果符合即输出“You get it!”。
但是仔细思考后发现想解出符合一个函数的两个Dword都很难,别说两个判断函数sub_401090和sub_4010E0同时都判对,开始考虑到可能产生进位溢出,无法用二元一次方程原理思考,所以写函数进行爆破,尽管将输入字符取值范围限制在“0-9a-zA-Z”,仍然无法爆破,一方面轮训完时间太久,二是可能不存在符合这两个函数的数值。
1、尝试发现,当输入字符个数过多时,程序会崩溃,猜测其对输入字符个数未进行限制,导致产生堆栈溢出,仔细观察scanf函数和sub_401050,输入的第13、14、15个字符串会溢出修改函数返回地址。
2、想让程序进入正确流程,一种方法是如果可以修改初值为2的dword_41B034为0即可;
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
谁下载
无
看原图
赞赏
雪币:
留言: