分段错误 - 查找缓冲区大小

时间:2018-04-09 21:32:44

标签: gcc x86 stack buffer-overflow stack-smash

我试图粉碎堆栈并使用下面的C代码:

#include<stdio.h> 

get_inp()
{
char buf[8];
gets(buf);
puts(buf);
}

main(){
get_inp();
return 0;
}

只有在输入最少16个字符时才会出现Segmentation故障。在IA-32架构上运行此功能。由于EBP在分配的缓冲区之后占用4个字节,因此在输入12个字符后我不会得到seg错误。希望对此有所清晰。

1 个答案:

答案 0 :(得分:0)

为什么过度编写保存的ebp会产生分段错误?它很可能永远不会再使用。 你的sigsegv的一个可能原因是覆盖了返回地址。故障地址是否与您输入的ascii值相似(尝试输入UUU..UU;您是否在0x55555555处输入错误?)