最近我正在做一些 Return-to-libc 攻击实验,基于论文Bypassing non-executable-stack during exploit using return-to-libc with my Ubuntu11.10。
在我的实验之前,我关闭了 ALSR。
根据论文,我可以在gdb中找到环境变量SHELL="/bin/bash"的地址(使用gdb调试我要攻击的程序):
但是当我尝试使用它进行Return-to-libc实验时,我发现这个地址是错误的。
然后我写了一个简单的程序来获取环境变量地址:
当我在终端中运行这个程序时,我得到了正确的地址:
有了这个地址,我就可以进行攻击了。
我也找到了关于这个的相关问题。但答案并没有真正意义(第二个可能更好)。
请告诉我一些有关此的细节。