我试图通过使用gdb查找system()
的地址并返回到/bin/sh
作为参数传递给system()
的地址来尝试实现返回libc缓冲区溢出攻击1}}在堆栈上。唯一的问题是,我无法找到system()
所在的内存中的地址,因为在gdb中运行print system
会返回"没有加载符号表。使用"文件"命令。",这并不是特别有用,因为将libc.so加载到gdb并没有任何好处。有没有办法可以在libc中找到我没有通过标题包含的函数地址?
作为参考,我在下面测试的代码如下,启用了DEP,并禁用了ASLR。
#include <stdio.h>
#include <string.h>
void foo(char *arg) {
char buf[100];
strcpy(buf, arg);
}
int main(int argc, char **argv) {
foo(argv[1]);
return 0;
}