简述缓冲区溢出攻击的基本原理,有什么方法来避免缓冲区溢出?
答:通过Buffer Overflow来改变在堆栈中存放的过程返回地址,从而改变整个程序的流程,使它转向任何我们想要它去的地方. 最常见的方法是:在长字符串中嵌入一段代码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行一段自己编写的代码了.一般来说,这段代码都是执行一个Shell程序(如/bin/sh),当入侵一个带有Buffer Overflow缺陷且具有suid-root属性的程序时,就可以获得一个具有root权限的shell。
在编程时注意检查参数的合法性,不要随意使用未知长度的字符串,并避免使用类似strcpy()这样不安全的函数,就可以有效地防范缓冲区溢出。
各省软考办 | ||||||||||