调试环境是ubuntu14 32位
这次开启了DEP、ASLR(不知道libc.so情况下)
还是参考了《一步一步学ROP之linux_x64篇》这篇文章。
代码是1.c:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void vulnerable_function() {
char buf[128];
read(STDIN_FILENO, buf, 256);
}
int main(int argc, char** argv) {
vulnerable_function();
write(STDOUT_FILENO, "Hello, World\n", 13);
}
gcc -fno-stack-protector -o 1 1.c
开启ASLR:
sudo -s
echo 2 > /proc/sys/kernel/randomize_va_space
exit
我们的最终目的是执行system('/bin/sh')代码,所以需要获取system函数的地址,以及想法获取字符串‘bin/sh’的地址。
因为不知道libc.so 文件,所以现在通过内存搜索(内存泄漏)的方式获取函数地址,这就需要用到