C 获取代码在 Windows 7 上不会出现段错误

标签 c windows

请勿使用易受攻击的代码

#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/

相关文章:

c - 为什么段错误(核心转储)?

c - 当key匹配时将节点发送到链表的前面。 C语言

windows - UAC提示触发器列表?

c - 努力按整数搜索文件中的结构数组

java - 将 DFA 实现为链表的算法

c - 将字符串数组传入函数+此数组的动态分配不起作用

c++ - 以普通用户身份执行命令

c# - 服务. Controller 状态/轮询

c++ - 原生 CheckedListBox?

c++ - 如何阻止 LWA_COLORKEY 绘制灰色轮廓?