您的位置首页百科知识

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

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

的有关信息介绍如下:

缓冲区溢出的原理:

通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:

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。为了达到这个目的,攻击者必须达到如下的两个目标:

在程序的地址空间里安排适当的代码。

通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。

可以根据这两个目标来对缓冲区溢出攻击进行分类。

以上内容参考:百度百科-缓冲区溢出