【发布时间】:2013-05-01 19:58:04
【问题描述】:
我最近一直在学习计算机安全,遇到了几个问题,尤其是在这个问题上我遇到了一些麻烦。
我得到了一个带有固定缓冲区的函数,我需要溢出才能执行文件 shellcode 中的 shellcode。功能很简单:
void vuln(char *str) {
char buf[64];
strcpy(buf, str);
//function provided to display stack on command prompt
dump_stack((void **) buf, 21, (void **) &str);
}
我最初的猜测是修改函数的返回地址 eip,以便定位和执行 shellcode 文件中的内容,但我意识到我没有该文件的地址可以用十六进制值表示。我很确定我需要操作返回地址,所以目前我要调用的是:
//the string is passed as a command line arg
./buffer_overflow_shellcode $(python -c "print 'A'*72 + '\x41\xd6\xff\xff' ")
我的输出是:
Stack dump:
0xffffd600: 0xffffd7fd (first argument)
0xffffd5fc: 0x08048653 (saved eip)
0xffffd5f8: 0xffffd641 (saved ebp)
0xffffd5f4: 0x41414141
0xffffd5f0: 0x41414141
0xffffd5ec: 0x41414141
0xffffd5e8: 0x41414141
0xffffd5e4: 0x41414141
0xffffd5e0: 0x41414141
0xffffd5dc: 0x41414141
0xffffd5d8: 0x41414141
0xffffd5d4: 0x41414141
0xffffd5d0: 0x41414141
0xffffd5cc: 0x41414141
0xffffd5c8: 0x41414141
0xffffd5c4: 0x41414141
0xffffd5c0: 0x41414141
0xffffd5bc: 0x41414141
0xffffd5b8: 0x41414141
0xffffd5b4: 0x41414141
0xffffd5b0: 0x41414141 (beginning of buffer)
Segmentation fault
在我用附加地址替换 edp 的地址并到达在返回地址,准备操作它。非常感谢任何帮助,谢谢!
【问题讨论】:
-
您是否使用
-really-no-protection和-make-me-vulnerable-to-everything标志编译了代码?现在,这对于该漏洞利用来说是必要的。 -
@Daniel Fischer 是的,我已经正确编译了以前的计算机安全程序,并且能够毫无问题地溢出它们。我知道我的程序会按预期运行
-
好的,只检查明显的嫌疑人。
-
您是否禁用了地址空间布局随机化? (echo 0 > /proc/sys/kernel/randomize_va_space)
标签: c assembly buffer-overflow shellcode