请勿使用易受攻击的代码
#include <stdio.h>
int main(int argc, char **argv)
{
char buf[8]; // buffer for eight characters
gets(buf); // read from stdio (sensitive function!)
printf("%s\n", buf); // print out data stored in buf
return 0; // 0 as return value
}
我正在使用上面的代码(来自 OWASP https://www.owasp.org/index.php/Buffer_overflow_attack ),它根本不会出现段错误。
我执行了 OWASP 输入显示的操作,但 cmd 只是将其打印出来并退出。无段错误。 Windows 是否隐藏了异常?
最佳答案
如果您尝试访问不允许程序读/写的内容,则只会出现段错误。由于您的数组是在堆栈上分配的(IIRC 这是实现定义的,但可能是),因此您可能有合理的空间量,可以在出现段错误之前缓冲溢出。
关于C 获取代码在 Windows 7 上不会出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613140/