C漏洞[重复]

Posted

技术标签:

【中文标题】C漏洞[重复]【英文标题】:C vulnerabilities [duplicate] 【发布时间】:2021-05-15 08:29:19 【问题描述】:

我正在阅读 C 中字符串中的漏洞,然后我发现了这段代码。谁能给我一个解释为什么这很脆弱?提前致谢。

【问题讨论】:

检查数组索引。 strcpy 复制 strlen + 1 个字符。当strlen(str) == MAXSIZE 时会发生什么? 写入超出数组范围是未定义的行为。查看您的 while 循环。你认为j 会一直介于09 之间吗?如前所述,您的strcpy 电话不安全。 【参考方案1】:
char buf[MAXSIZE];
if (strlen(str) > MAXSIZE)
    return;
strcpy(buf, str);                

此代码错误地检查最大长度。 C 字符串在字符串末尾有一个 nul 来标记字符串的结尾。 strcpy() 将复制它。为了适应这个 nul,测试必须是:

if (strlen(str) >= MAXSIZE)

下面的代码也不正确。 诠释我[10]; int j = 0;

while (j < 10000)
    i[j] = 5;                
    ++j;

此代码将覆盖内存中数组 i 的 10 个整数之后的数据。这将创建一个未定义的行为,可能是崩溃,但可能更微妙...

【讨论】:

以上是关于C漏洞[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何限制用户更新错误、代码异味、漏洞、重复

关于在静态变量中存储密码的漏洞[重复]

使用nmap 验证多种漏洞

文件上传漏洞成因是啥?

简析CWE-476:NULL Pointer Dereference空指针解引用漏洞

什么是C语言缓冲区溢出漏洞?怎么利用?谁可以提供详细的资料