缓冲区溢出的基本原理是什么

缓冲区溢出的原理:
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的 。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数 。例如下面程序:
void function(char *str) {
char buffer[16];
strcpy(buffer,str);
}
上面的strcpy()将直接吧str中的内容copy到buffer中 。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错 。存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等 。

缓冲区溢出的基本原理是什么

文章插图
漏洞:
缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了 。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell 。为了达到这个目的,攻击者必须达到如下的两个目标:
在程序的地址空间里安排适当的代码 。
通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行 。
可以根据这两个目标来对缓冲区溢出攻击进行分类 。
以上内容参考:百度百科-缓冲区溢出
【缓冲区溢出的基本原理是什么】

    推荐阅读