所以这段代码有一个错误:
void foo (const char * str) {
char buffer[64];
strncpy(buffer, str, sizeof(buffer));
buffer[sizeof(buffer)] = '\0';
printf("whoa: %s", buffer);
}
Run Code Online (Sandbox Code Playgroud)
如果恶意攻击者弄清楚foo()函数是如何工作的,它会怎么做?基本上,这个代码容易受到什么样的安全潜在问题的影响?
我个人认为攻击者在这种情况下无法做任何事情,但我听说他们可以做很多事情,即使他们只能使用1个字节.
我在这里看到的唯一一个错误是这一行:
buffer[sizeof(buffer)] = '\0';
Run Code Online (Sandbox Code Playgroud)
这就是你在说什么?我不是这些东西的专家,所以也许我忽略了一些东西,但由于唯一能写入错误字节的东西是零,我认为可能性非常有限.攻击者无法控制那里写的是什么.很可能它只会导致崩溃,但它也可能导致大量其他奇怪的行为,所有这些行为都特定于您的应用程序.我没有看到任何代码注入漏洞,除非此错误导致您的应用程序暴露另一个此类漏洞,该漏洞将用作实际攻击的向量.
再次,带上一粒盐......
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |