本题跟之前不一样的是,不是利用格式化任意写:去修改任意地址(包括函数got.plt)
的地址从而达到“鸠占鹊巢”间接调用,这里是修改eip去执行后门函数。主要可能是存在后门函数的原因,所以修改eip指向后门函数。
分析题目得出判断:我们要修改eip指向后门函数。

程序给了两处格式化漏洞利用的机会。
前面虽然字符串漏洞被首先输入存入的是buff指向的堆空间,但是当调用函数的时候,其作为函数的参数,充当局部变量也会被放入栈中,我们在上图中的printf函数下个断点,并查看stack:
虽然栈随着地址空间随机化,会变,但是我们发现本题程序的架构没有那么复杂,多次执行后发现“ebp”下方的(我们需要将在此修改为后门函数地址)地址总是倒数第二位在变就是1c啊2c啊3c啊上面的,我们可以假设一种情况这里假设位3c,多次执行后,满足3c条件就可以出结果。
这里还得注意:我们利用%n去实现修改数据,得仔细思考其定义再实现利用:
%s与%n都是利用栈上存的数据当做参数,不是栈前边的地址为参数
下面结合上图解释:
这里就是利用%hhn先修改0xffffd188为0xffffd13c,再看偏移18处:修改成功后:利用%18hn修改的就是bep下方的0x804864b了,观察IDA上.text发现(函数或者指令)一般都是0x8048打头所以我们利用0xffff截

本文介绍了一种利用格式化漏洞的方法,通过修改EIP指向后门函数来触发特定行为。利用%n技巧修改指定地址,结合IDA分析确定后门函数地址,最终实现远程控制目标程序。
最低0.47元/天 解锁文章
693

被折叠的 条评论
为什么被折叠?



