【发布时间】:2012-05-14 20:51:01
【问题描述】:
命令
gcc main.c -o main
ldd main
产量
linux-gate.so.1 => (0x00f67000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00b7d000)
/lib/ld-linux.so.2 (0x00ae5000)
是否可以更改 libc.so.6 将在内存中映射的地址?例如,将 libc.so.6 映射到例如 0xb0000000。
我正在运行 Xubuntu 32 位:Linux 3.2.0-23-generic i686 i686 i386 GNU/Linux
【问题讨论】:
-
为了执行一些 ret2libc 缓冲区溢出攻击,有效负载字符串必须包含一些 libc 函数的地址,这些函数在我的二进制文件的 plt 部分中不存在。该字符串不应包含任何 \x00 字节,因此我希望 libc 库在内存中更高。请注意,这只是一个自定义的“培训二进制文件”。我的系统上暂时禁用了 ASLR(它只是一个用于此目的的虚拟机,因此没有任何危害)。