溢出攻击缓冲区溢出攻击的4.问题

溢出攻击  时间:2021-07-28  阅读:()

什么是溢出攻击

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。

利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。

更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。

缓冲区溢出攻击有多种英文名称:buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack, mangle the stack, memory leak,overrun screw;它们指的都是同一种攻击手段。

第一个缓冲区溢出攻击--Morris蠕虫,发生在二十年前,它曾造成了全世界6000多台网络服务器瘫痪。

  1.概念   缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是 程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区 又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出 。

  2.危害   在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。

而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。

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

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

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

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

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

  当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”(Segmentation fault),而不能达到攻击的目的。

最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。

如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。

  缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。

而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。

被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。

  在1998年Lincoln实验室用来评估入侵检测的的5种远程攻击中,有2种是缓冲区溢出。

而在1998年CERT的13份建议中,有9份是是与缓冲区溢出有关的,在1999年,至少有半数的建议是和缓冲区溢出有关的。

在Bugtraq的调查中,有2/3的被调查者认为缓冲区溢出漏洞是一个很严重的安全问题。

  缓冲区溢出漏洞和攻击有很多种形式,会在第二节对他们进行描述和分类。

相应地防卫手段也随者攻击方法的不同而不同,将在第四节描述,它的内容包括针对每种攻击类型的有效的防卫手段。

参考资料: /user1/1051/archives/2005/7876.shtml /A-qhdxxb-zr200301015.html 【缓冲区溢出】 /view/36638.htm

什么是溢出攻击,需要哪些条件

展开全部 所谓的溢出攻击也就是溢出伤害,也就是说在目标死亡后你所打出的多余的伤害,举个例子就是说,一个怪200血,你打出了400伤害,怪物死亡,那么这多出的200伤害就是溢出伤害, 溢出治疗也是如此。

你给目标加血,目标5000血。

你一个暴击加了6000,多出的1000就是溢出治疗

什么是溢出攻击?

关于“溢出攻击”我想老一点的黑客都知道,对于菜鸟就不一定了。

那么“溢出攻击”到底是什么意思呢? 在计算机中有个叫“缓冲区”的地方,他是用来存储用户输入的数据的,缓冲区的长度是被事先设定好的,如果用户输入的数据超过了缓冲区的长度,那么就会溢出,而这些溢出的数据就会覆盖在合法的数据上,这就像杯子装水的道理,水多了杯子装不下,当然就会溢出咯!缓冲区溢出漏洞主要是由于许多软件没有对缓冲区进行检查而造成。

如果溢出的数据是一条像 user 5616 123/add”这样的指令,如果执行会怎样呢?(.....)所以利用缓冲区溢出进行攻击是一种很好的方法。

常见的溢出攻击如:微软的MS-04011远程缓冲区溢出漏洞。

利用该漏洞就可以获得对方的SHELL,而且这个漏洞也被许多人用来入侵,成功率很高,不过现在的人都有点安全意识,都补上了该漏洞,现在很少有这样漏洞的机子。

请问什么是缓冲区溢出攻击?

缓冲区溢出(又称堆栈溢出)攻击是最常用的黑客技术之一。

这种攻击之所以泛滥,是由于开放源代码程序的本质决定的。

Unix本身以及其上的许多应用程序都是用C语言编写的,而C语言不检查缓冲区的边界。

在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区,这就称作"缓冲区溢出"。

一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误;但是,如果输入的数据是经过"黑客"精心设计的,覆盖缓冲区的数据恰恰是黑客的入侵程序代码,黑客就获取了程序的控制权。

尽管这项攻击的技术要求非常高,而一旦执行这项攻击的程序被设计出来却是非常简单的。

由于缓冲区溢出是一个编程问题,所以他们只能通过修复被破坏的程序代码来解决问题。

从"缓冲区溢出攻击"的原理可以看出,要防止此类攻击,我们可以在开放程序时仔细检查溢出情况,不允许数据溢出缓冲区。

经常检查操作系统和应用程序提供商的站点,一旦发现补丁程序就马上下载是最好的方法。

缓冲区溢出攻击的后果

你是已经算好溢出后占用的内存位置的内容还是乱溢出?乱溢出也就是导致应用程序崩溃,更严重的可能让操作系统崩溃。

安全焦点的那本书上讲到了win 和linux的内存溢出的问题,你可以去看看。

缓冲区溢出攻击的4.问题

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

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

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

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

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

在4.1节,将描述攻击代码是如何放入被攻击程序的地址空间的。

在4.2节,将介绍攻击者如何使一个程序的缓冲区溢出,并且执行转移到攻击代码(这个就是“溢出”的由来)。

在4.3节,将综合前两节所讨论的代码安排和控制程序执行流程的技术。

4.1 在程序的地址空间里安排适当的代码的方法 有两种在被攻击程序地址空间里安排攻击代码的方法: 1、植入法 攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。

这个字符串包含的资料是可以在这个被攻击的硬件平台上运行的指令序列。

在这里,攻击者用被攻击程序的缓冲区来存放攻击代码。

缓冲区可以设在任何地方:堆栈(stack,自动变量)、堆(heap,动态分配的内存区)和静态资料区。

2、利用已经存在的代码 有时,攻击者想要的代码已经在被攻击的程序中了,攻击者所要做的只是对代码传递一些参数。

比如,攻击代码要求执行“exec (bin/sh)”,而在libc库中的代码执行“exec (arg)”,其中arg是一个指向一个字符串的指针参数,那么攻击者只要把传入的参数指针改向指向“/bin/sh”。

4.2 控制程序转移到攻击代码的方法 所有的这些方法都是在寻求改变程序的执行流程,使之跳转到攻击代码。

最基本的就是溢出一个没有边界检查或者其它弱点的缓冲区,这样就扰乱了程序的正常的执行顺序。

通过溢出一个缓冲区,攻击者可以用暴力的方法改写相邻的程序空间而直接跳过了系统的检查。

分类的基准是攻击者所寻求的缓冲区溢出的程序空间类型。

原则上是可以任意的空间。

实际上,许多的缓冲区溢出是用暴力的方法来寻求改变程序指针的。

这类程序的不同之处就是程序空间的突破和内存空间的定位不同。

主要有以下三种: 1、活动纪录(Activation Records) 每当一个函数调用发生时,调用者会在堆栈中留下一个活动纪录,它包含了函数结束时返回的地址。

攻击者通过溢出堆栈中的自动变量,使返回地址指向攻击代码。

通过改变程序的返回地址,当函数调用结束时,程序就跳转到攻击者设定的地址,而不是原先的地址。

这类的缓冲区溢出被称为堆栈溢出攻击(Stack Smashing Attack),是目前最常用的缓冲区溢出攻击方式。

2、函数指针(Function Pointers) 函数指针可以用来定位任何地址空间。

例如:“void (* foo)()”声明了一个返回值为void的函数指针变量foo。

所以攻击者只需在任何空间内的函数指针附近找到一个能够溢出的缓冲区,然后溢出这个缓冲区来改变函数指针。

在某一时刻,当程序通过函数指针调用函数时,程序的流程就按攻击者的意图实现了。

它的一个攻击范例就是在Linux系统下的superprobe程序。

3、长跳转缓冲区(Longjmp buffers) 在C语言中包含了一个简单的检验/恢复系统,称为setjmp/longjmp。

意思是在检验点设定“setjmp(buffer)”,用“longjmp(buffer)”来恢复检验点。

然而,如果攻击者能够进入缓冲区的空间,那么“longjmp(buffer)”实际上是跳转到攻击者的代码。

象函数指针一样,longjmp缓冲区能够指向任何地方,所以攻击者所要做的就是找到一个可供溢出的缓冲区。

一个典型的例子就是Perl 5.003的缓冲区溢出漏洞;攻击者首先进入用来恢复缓冲区溢出的的longjmp缓冲区,然后诱导进入恢复模式,这样就使Perl的解释器跳转到攻击代码上了。

4.3代码植入和流程控制技术的综合分析 最简单和常见的缓冲区溢出攻击类型就是在一个字符串里综合了代码植入和活动纪录技术。

攻击者定位一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出,改变活动纪录的同时植入了代码。

这个是由Levy指出的攻击的模板。

因为C在习惯上只为用户和参数开辟很小的缓冲区,因此这种漏洞攻击的实例十分常见。

代码植入和缓冲区溢出不一定要在在一次动作内完成。

攻击者可以在一个缓冲区内放置代码,这是不能溢出的缓冲区。

然后,攻击者通过溢出另外一个缓冲区来转移程序的指针。

这种方法一般用来解决可供溢出的缓冲区不够大(不能放下全部的代码)的情况。

如果攻击者试图使用已经常驻的代码而不是从外部植入代码,他们通常必须把代码作为参数调用。

举例来说,在libc(几乎所有的C程序都要它来连接)中的部分代码段会执行“exec(something)”,其中somthing就是参数。

攻击者然后使用缓冲区溢出改变程序的参数,然后利用另一个缓冲区溢出使程序指针指向libc中的特定的代码段。

创梦网络-四川一手资源高防大带宽云服务器,物理机租用,机柜资源,自建防火墙,雅安最高单机700G防护,四川联通1G大带宽8.3W/年,无视UDP攻击,免费防CC

? ? ? ?创梦网络怎么样,创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以****,属于一手资源,高防机柜、大带宽、高防IP业务,另外创梦网络近期还会上线四川联通大带宽,四川联通高防IP,一手整CIP段,四川电信,联通高防机柜,CN2专线相关业务。成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快...

瓜云互联:全场9折优惠,香港CN2、洛杉矶GIA高防vps套餐,充值最高返300元

瓜云互联怎么样?瓜云互联之前商家使用的面板为WHMCS,目前商家已经正式更换到了魔方云的面板,瓜云互联商家主要提供中国香港和美国洛杉矶机房的套餐,香港采用CN2线路直连大陆,洛杉矶为高防vps套餐,三网回程CN2 GIA,提供超高的DDOS防御,瓜云互联商家承诺打死退款,目前商家提供了一个全场9折和充值的促销,有需要的朋友可以看看。点击进入:瓜云互联官方网站瓜云互联促销优惠:9折优惠码:联系在线客...

RAKsmart推出7.59美元/月,云服务器产品Cloud Server,KVM架构1核1G内存40G硬盘1M带宽基础配置

近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...

溢出攻击为你推荐
智能加速电子加速器是什么东西?hacintosh现在南京这边ipad3多少钱大蟒蛇平台手机软件的制作windows7正版验证Win7正版验证方法有哪些?圣诞节网页制作我想在接下来的圣诞、元旦设计一个网站的宣传页面,哪里有好的公司帮我呢?淘气鸟八哥鸟忽然死了?magento模板magento系统缩略图大小在哪里修改?vs2005快捷键vs中的一个快捷键金山铁路最新时刻表请问现在轨道交通22号线金山铁路是个什么情况?据说9月28日就开通了啊~~~修改qq密码保护如何设置QQ密码保护和修改密码
便宜vps 域名主机基地 工信部域名备案系统 万网域名解析 老鹰主机 紫田 河南移动邮件系统 炎黄盛世 爱奇艺vip免费试用7天 中国电信测速网 四川电信商城 万网主机管理 华为k3 lamp什么意思 阿里云邮箱个人版 中国电信宽带测速 碳云 发证机构 服务器是什么意思 paypal兑换 更多