0

我正在尝试 ret-to-libc 攻击并使用以下代码来获取环境变量 /bin/bash 的地址

#include <unistd.h>
int main(void)
{

  printf("bash address: 0x%lx\n", getenv("SHELL"));
 return 0;
}

当我使用gdb的x命令检查这段代码返回的地址是否正确时,它第一次显示正确。但是当执行其他一些程序时,这个地址会自动改变。我应该怎么做才能保持这个环境变量的地址不变?我将这个地址用于缓冲区溢出,但由于每次运行它都会不断变化,因此攻击永远不会成功。有什么建议么?

4

1 回答 1

0

您必须禁用 ASLR 才能使地址不变。

echo 0 | tee /proc/sys/kernel/randomize_va_space
于 2019-04-06T17:52:37.440 回答