-
-
CTF第二题
-
发表于: 2017-10-28 02:24 3056
-
这个题出的很有意思,也挖了个大坑。涉及到栈溢出和代码混淆。
首先找到_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即可;
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
谁下载
赞赏
雪币:
留言: