当 ASLR 未激活时,如何计算 LIBC 中函数的地址。我只有加载 LIBC 的地址(带有ldd /bin/bash
)。
谢谢你的解释
编辑:
当我使用你的方法时,我没有得到好的结果,虽然它总体上是好的(我不明白为什么)
libc基本地址
ldd ch33
linux-gate.so.1 => (0xb7fff000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7e46000)
/lib/ld-linux.so.2 (0x80000000)
系统偏移:
gdb -q /lib/i386-linux-gnu/libc.so.6
gdb$ print system
$1 = {<text variable, no debug info>} 0x40310 <__libc_system>
然后我计算 0x40310 + 0xb7e46000 = 0xb7e86310
但是,我应该得到 0xb7e64310
因为:
~$ gdb ch33
gdb$ r
Starting program: /challenge/app-systeme/ch33/ch33
...
gdb$ p system
$1 = {<text variable, no debug info>} 0xb7e64310 <__libc_system>