首页
社区
课程
招聘
CTF第二题
发表于: 2017-10-28 02:24 2904

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期)

上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//