第一生活网

缓冲区溢出攻击(缓冲区溢出)

施浩爱
导读 大家好,小芯来为大家解答以上的问题。缓冲区溢出攻击,缓冲区溢出这个很多人还不知道,现在让我们一起来看看吧!1、缓冲区溢出的原理:通过

大家好,小芯来为大家解答以上的问题。缓冲区溢出攻击,缓冲区溢出这个很多人还不知道,现在让我们一起来看看吧!

1、缓冲区溢出的原理:通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。

2、造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

3、例如下面程序:void function(char *str) {char buffer[16];strcpy(buffer,str);}上面的strcpy()将直接吧str中的内容copy到buffer中。

4、这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。

5、存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。

6、漏洞:缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。

7、一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell。

8、为了达到这个目的,攻击者必须达到如下的两个目标:在程序的地址空间里安排适当的代码。

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

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

11、以上内容参考:百度百科-缓冲区溢出缓冲区溢出(buffer overflow),针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。

12、原理:通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。

13、造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

14、扩展资料缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。

15、攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell。

16、为了达到这个目的,攻击者必须达到如下的两个目标:在程序的地址空间里安排适当的代码。

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

18、参考资料来源:百度百科-缓冲区溢出攻击参考资料来源:百度百科-缓冲区溢出更简单的说法是,杯子(内存区域)满了,可茶壶(程序)还在往里倒水(垃圾数据通常为NULL数值),结果水就流出来了,流到外面(其他程序的内存区域)弄湿了桌子还有可能流到电器中造成危险(溢出攻击),就是这样你先弄懂缓冲区!  缓冲器,为暂时置放输出或输入资料的内存。

19、  缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。

20、  缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。

21、  缓冲溢出是一种系统攻击的手段,借着在程序缓冲区编写超出其长度的代码,造成溢出,从而破坏其堆栈,使程序执行攻击者在程序地址空间中早已安排好的代码,以达到其目的. 一般黑客攻击root程序,然后执行类似exec(sh)的代码获得root的shell. 它造成了两种严重的后果:   1. 覆盖堆栈的相邻单元. 使程序执行失败, 严重可导致系统崩溃.  2. 可执行认识指令代码,最后获得系统root特级权限.。

本文到此分享完毕,希望对大家有所帮助。