我在下面有这段代码:
char buffer[10];
void main(int argc, char *argv[]) {
strcpy(buffer, argv[1]);
printf("value of buffer %s\n",buffer);
}
我知道将缓冲区变量放在主函数中可能会使堆栈溢出,但是通过将其声明为全局变量,无论我从命令行输入多少 ascii 字符,都不会发生任何事情。我期待一个分段错误,但它似乎打印了我输入的所有字符。怎么会?
我还有一个与该主题相关的问题,如果程序存在缓冲区溢出漏洞,例如堆栈溢出,我是否可以在易受攻击的变量中输入我想要的代码,或者如果代码超过了 SO 会抛出分段默认异常为用户程序分配的内存边界?