Tes*_*sla 7 c security format-string
我正在阅读并尝试学习格式字符串漏洞.我有一个易受攻击的功能,我理解与格式字符串有关的要点.
基本上,这就是我想要做的.传入我的格式字符串,其中包含一些shellcode作为其中的一部分.我还需要格式化我的字符串,以便更换易受攻击函数的返回地址,以便它指向我在堆栈上的shellcode.因此,当函数返回时,它将跳转到堆栈上的shellcode并打开shell.
目前,我正处于可以在堆栈上看到我的shellcode的位置,并且我能够写入返回地址来更改它.问题是,我使用%n作为覆盖返回地址的方式,并且不确定如何使用特定值覆盖%n.当然,%n只是将到目前为止写入的字节数打印到堆栈上的指定地址.我已经阅读了几个关于你如何操纵%n来写出你想要的确切地址/值的东西,但是我对如何做到这一点感到很遗憾.
任何人都能解释一下吗?
编辑:我已经尝试用'%500d"和"%.500d"等内容填充我的格式字符串以及某些n值的"%nu".(我也尝试过更小的值)但是这只是带来了分段错误.
为了澄清一些困惑,这是我在回复评论时写的一个简单例子:
好的,我会试着更清楚一点.我有一个易受攻击的程序.易受攻击的一点是"printf(输入);".我想通过传入格式字符串来利用它.现在,例如,我有一个格式字符串
"\x0c\xde\xbf\xff%08x.%08x.%08x.%08x.%08x.%08x.%n"
Run Code Online (Sandbox Code Playgroud)
传入易受攻击的函数时,此格式字符串将使用写入的字节数覆盖0xffbfde0c的内存地址.我想找出如何修改该格式字符串,以便我可以通过以某种方式填充在%n之前写入的字节数来使%n覆盖特定值.
%n写入数字的唯一方法是printf打印该数量的字符。要获取任何指针的值,您需要打印许多字节。
最简单的方法是类似的%999999s。
此外,尝试将返回值定向到某个函数(也称为“返回 libc”)可能会更容易,因为代码通常驻留在相对较低的地址中。
| 归档时间: |
|
| 查看次数: |
6029 次 |
| 最近记录: |