我有下面这段代码:为什么我不能溢出一个全局变量?
char buffer[10];
void main(int argc, char *argv[]) {
strcpy(buffer, argv[1]);
printf("value of buffer %s\n",buffer);
}
我知道放置缓冲区变量主函数里面,我可以使栈溢出,但通过声明它作为一个全局变量,不管我是从多少个ASCII字符输入没有任何反应的命令行。我期待分段错误,但它似乎打印了我输入的所有字符。怎么来的?
我有另一个与该主题有关的问题,如果一个程序有一个缓冲区溢出漏洞,例如堆栈溢出,我是否可以输入一个尽可能大的代码进入易受攻击的变量,或者如果代码超出为用户程序分配的内存边界,SO会抛出分段默认异常?
你用'-Wall'编译了它吗? –
这应该如何帮助? @ shiplu.mokadd.im – alk
好吧,OP缺少'printf()'和'strcpy()'的原型,是的。 – alk