我最近一直在学习计算机安全并遇到了一些问题,并且特别在这个问题上遇到了一些麻烦。使用缓冲区溢出来执行shell代码
为了在文件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
的python脚本只是简单地打印72字母A对将缓冲区溢出至edp和eip处,在我用附加地址替换edp的地址并到达返回地址后,准备对其进行操作。任何帮助真的很感激,谢谢!
你是否用'-really-no-protection'和'-make-me-vulnerable-to-everything'标志编译了代码?这是目前攻击所必需的。 – 2013-05-01 20:03:01
@Daniel Fischer是的,我已经正确编译了以前的计算机安全程序并且能够无任何问题地将它们溢出。我知道我的程序将按预期运行 – 2013-05-01 20:21:18
好的,只是检查明显的嫌疑人。 – 2013-05-01 20:25:01