我正在尝试ret-to-libc攻击并使用以下代码获取环境变量/ bin / bash的地址
#include <unistd.h>
int main(void)
{
printf("bash address: 0x%lx\n", getenv("SHELL"));
return 0;
}
当我使用gdb的x命令检查此代码返回的地址是否正确时,它第一次正确显示。但是当执行其他程序时,该地址会自动更改。我该怎么做才能保留此环境变量的地址不变?我正在使用此地址进行缓冲区溢出,但由于它随着每次运行而不断变化,因此攻击永远不会成功。有什么建议吗?
答案 0 :(得分:0)
您必须禁用ASLR,地址才能保持不变。
echo 0 | tee /proc/sys/kernel/randomize_va_space