返回libc-缓冲区溢出

时间:2018-07-11 15:37:50

标签: buffer-overflow libc

我正在学习缓冲区溢出攻击,并且遇到了以下命令: 使用此处获得的进程ID的“ ps aux | grep exploitme”,可以说是312 运行“ gdb exploitme 312”,它神奇地将libc映射到进程中。通常,为什么不能将libc映射到进程中?如果攻击者想克服'nx'保护,他将始终依靠将libc映射到易受攻击的程序中吗?

返回到libc-缓冲区溢出

enter image description here

1 个答案:

答案 0 :(得分:0)

  

让我们说它是312“ gdb exploitme 312”正在运​​行,它神奇地将libc映射到了进程中

您很困惑:在GDB附加期间实际上没有任何映射。 libc.so.6已经很早就已经映射到该进程中了。

所有GDB都以Reading symbols from ... Loaded symbols from ...告诉您,是因为GDB本身意识到libc.so.6已被映射,并且它(GDB)从libc.so.6读取符号表,因此可以打印地址{{ 1}}的符号形式为0xb7f3bcde

在将GDB附加到__read_nocancel之前,您可以确认libc.so.6已经存在了。。

您还可以阻止GDB自动加载共享库(cat /proc/312/maps)的符号,并观察到set auto-solib-add off消失了,并且您从GDB获取地址而不是符号名称。