我已经在许多地方读过,字符串缓冲区溢出会产生诸如添加恶意代码之类的问题,或者很容易被黑客入侵。但是字符串存在于BSS部分以及它如何影响代码部分。
其次,即使字符串没有超限,仍然可以通过十六进制编辑器看到它,所以它们不能同样危险吗?
感谢。
答案 0 :(得分:3)
buffer overflow可以在堆栈分配的字符串上发生(例如,对本地strcat
数组上的char buf[12]
进行未经检查的调用)。这就是为什么sprintf
已被弃用的原因,您总是使用snprintf
恶意代码和exploited可能是malware,例如shellcode
不要试图制造一些这样的恶意代码:一名青少年在上个世纪被黑客入侵并利用sendmail
。
BTW,堆内的缓冲区溢出也会通过破坏不相关的数据而给您带来很多麻烦。