缓冲区溢出(又称堆栈溢出)攻击是最常用的黑客技术之一。这种攻击之所以泛滥,是由于开放源代码程序的本质决定的。Unix本身以及其上的许多应用程序都是用C语言编写的,而C语言不检查缓冲区的边界。在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区,这就称作"缓冲区溢出"。 一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误;但是,如果输入的数据是经过"黑客"精心设计的,覆盖缓冲区的数据恰恰是黑客的入侵程序代码,黑客就获取了程序的控制权。尽管这项攻击的技术要求非常高,而一旦执行这项攻击的程序被设计出来却是非常简单的。由于缓冲区溢出是一个编程问题,所以他们只能通过修复被破坏的程序代码来解决问题。从"缓冲区溢出攻击"的原理可以看出,要防止此类攻击,我们可以在开放程序时仔细检查溢出情况,不允许数据溢出缓冲区。经常检查 *** 作系统和应用程序提供商的站点,一旦发现补丁程序就马上下载是最好的方法。
我一般是这样做的
1 寻找系统漏洞。寻找可以照成缓冲区溢出的漏洞。当然这要在你以精确目标,对目标有一定了解的基础上。比如目标的 *** 作系统,开启服务,长驻程序(这个肯定是管理员用户开启的程序)。可以网上查,最好别自己去找,这个凭空找,一般比较难,也很麻烦。很多国外的黑客网站会公布最新漏洞,E语不方便国内也有一些,不过国内比较慢。当然也有一些所谓的工具可以扫描出来,不过除非你没固定目标攻击谁都行,否则对固定目标扫描一般没啥大用。
2 反汇编了漏洞部分代码。如果是开源系统或程序,反汇编获得溢出的栈地址,即调用函数后返回的函数指针地址。
这个第一次做会比较难,最好找人指导你一下,当然你也可以找我,免费,不过你要有一定的GDB和汇编语言基础才行。(不用太强,会一点皮毛就行,因为我也强不哪去),当然相当一部分公布的漏洞这些会随之公布。
3 编写缓冲溢出地址对应的执行代码,然后通过缓冲区溢出漏洞把栈内函数返回的地址对应到你这段执行函数上。这个你要之前就写好。针对你的目的,可以是给自己提权,或者拷贝个文件什么的,看你自己爱好了,win 和 linux下用EXE系的函数执行SHELL或直接系统调用就行了,反正这时你已经有管理员权限了。这类代码不想写网上也有很多且原理非常简单。
4 扫尾。特别是大网站或大公司的服务器,不想人家发现别忘了把改的东西改回来,当然你可以手动创造一个带漏洞的程序,然后定时以管理员权限运行,为下次进入做准备。这样的程序一般杀毒软件都不是很敏感(只要你别去改人家密码),定时运行,别让人家看到进程就行啦。
以上 这个只是最简单的原理性步骤 高手们会在这个基础上运用很多高超的技巧 当然具体问题还要因地制宜 这就不是一两句话能说清楚啦 希望对你有帮助
请遵守当地法律 不要从事违法活动
以上就是关于怎么进行缓冲区溢出攻击全部的内容,包括:怎么进行缓冲区溢出攻击、缓冲区溢出攻击的基本流程、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)