KUN*_*KUN 6 c linux debugging gdb
最近我正在做一些基于文件的Return-to-libc攻击实验.在使用我的Ubuntu11.10 使用return-to-libc时,在开发过程中绕过非可执行堆栈.
在我的实验之前,我关闭了ALSR.
根据文章,我可以在gdb中找到环境变量SHELL ="/ bin/bash"的地址(使用gdb来调试我要攻击的程序):


但是当我尝试将它用于Return-to-libc实验时,我发现这个地址是错误的.
然后我编写一个简单的程序来获取环境变量地址:

当我在终端中运行这个程序时,我得到了正确的地址:
有了这个地址,我可以进行攻击.
我也找到了相关的问题.但答案并没有多大意义(第二个可能更好).
请告诉我一些关于此的细节.
从您的屏幕截图来看,我假设您正在 32 位 intel 平台上运行。我还没有花时间充分研究这个问题的答案,但以下几点值得注意:
x/100s **(char***)&environ)。0xBffff47A,您非常接近用户地址空间的顶部(以 结束0xC0000000)。所以,我的猜测是这里发生的事情是:
_=/usr/bin/gdb在 GDB 下运行时注意到“”,我敢打赌只有在 GDB 下运行时才会出现。结果是,虽然您的固定指针倾向于落在环境块中间的某个位置,但它不会每次都落在同一个位置,因为环境本身在运行之间不断变化。
| 归档时间: |
|
| 查看次数: |
4246 次 |
| 最近记录: |