问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

缓冲区溢出的相关知识

发布网友 发布时间:2022-04-30 16:40

我来回答

1个回答

热心网友 时间:2022-06-27 17:19

地址空间里安排适当的代码的方法
有两种在被攻击程序地址空间里安排攻击代码的方法:
植入法
攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。这个字符串包含的资料是可以在这个被攻击的硬件平台上运行的指令序列。在这里,攻击者用被攻击程序的缓冲区来存放攻击代码。缓冲区可以设在任何地方:堆栈(stack,自动变量)、堆(heap,动态分配的内存区)和静态资料区。
利用已经存在的代码
有时,攻击者想要的代码已经在被攻击的程序中了,攻击者所要做的只是对代码传递一些参数。比如,攻击代码要求执行“exec (“/bin/sh”)”,而在libc库中的代码执行“exec (arg)”,其中arg使一个指向一个字符串的指针参数,那么攻击者只要把传入的参数指针改向指向”/bin/sh”。
控制程序转移到攻击代码的方法
所有的这些方法都是在寻求改变程序的执行流程,使之跳转到攻击代码。最基本的就是溢出一个没有边界检查或者其它弱点的缓冲区,这样就扰乱了程序的正常的执行顺序。通过溢出一个缓冲区,攻击者可以用暴力的方法改写相邻的程序空间而直接跳过了系统的检查。
分类的基准是攻击者所寻求的缓冲区溢出的程序空间类型。原则上是可以任意的空间。实际上,许多的缓冲区溢出是用暴力的方法来寻求改变程序指针的。这类程序的不同之处就是程序空间的突破和内存空间的定位不同。主要有以下三种:
活动纪录(Activation Records)
每当一个函数调用发生时,调用者会在堆栈中留下一个活动纪录,它包含了函数结束时返回的地址。攻击者通过溢出堆栈中的自动变量,使返回地址指向攻击代码。通过改变程序的返回地址,当函数调用结束时,程序就跳转到攻击者设定的地址,而不是原先的地址。这类的缓冲区溢出被称为堆栈溢出攻击(Stack Smashing Attack),是目前最常用的缓冲区溢出攻击方式。
函数指针(Function Pointers)
函数指针可以用来定位任何地址空间。例如:“void (* foo)()”声明了一个返回值为void的函数指针变量foo。所以攻击者只需在任何空间内的函数指针附近找到一个能够溢出的缓冲区,然后溢出这个缓冲区来改变函数指针。在某一时刻,当程序通过函数指针调用函数时,程序的流程就按攻击者的意图实现了。它的一个攻击范例就是在Linux系统下的superprobe程序。
长跳转缓冲区(Longjmp buffers)
在C语言中包含了一个简单的检验/恢复系统,称为setjmp/longjmp。意思是在检验点设定“setjmp(buffer)”,用“longjmp(buffer)”来恢复检验点。然而,如果攻击者能够进入缓冲区的空间,那么“longjmp(buffer)”实际上是跳转到攻击者的代码。象函数指针一样,longjmp缓冲区能够指向任何地方,所以攻击者所要做的就是找到一个可供溢出的缓冲区。一个典型的例子就是Perl 5.003的缓冲区溢出漏洞;攻击者首先进入用来恢复缓冲区溢出的的longjmp缓冲区,然后诱导进入恢复模式,这样就使Perl的解释器跳转到攻击代码上了。
代码植入和流程控制技术的综合分析
最简单和常见的缓冲区溢出攻击类型就是在一个字符串里综合了代码植入和活动纪录技术。攻击者定位一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出,改变活动纪录的同时植入了代码。这个是由Levy指出的攻击的模板。因为C在习惯上只为用户和参数开辟很小的缓冲区,因此这种漏洞攻击的实例十分常见。
代码植入和缓冲区溢出不一定要在在一次动作内完成。攻击者可以在一个缓冲区内放置代码,这是不能溢出的缓冲区。然后,攻击者通过溢出另外一个缓冲区来转移程序的指针。这种方法一般用来解决可供溢出的缓冲区不够大(不能放下全部的代码)的情况。
如果攻击者试图使用已经常驻的代码而不是从外部植入代码,他们通常必须把代码作为参数调用。举例来说,在libc(几乎所有的C程序都要它来连接)中的部分代码段会执行“exec(something)”,其中somthing就是参数。攻击者然后使用缓冲区溢出改变程序的参数,然后利用另一个缓冲区溢出使程序指针指向libc中的特定的代码段。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宜宾陪产假有多少天 ...19宽屏显示器。调色彩时有个选项magicColor是什么意思? eternuer是什么意思 《法语助手》法汉 癌症老人能吃山竹吗 癌症病人能吃抗氧化剂吗 乳腺癌骨转移病人吃什么水果好 肝癌老人吃山竹有害处吗 癌症病人能不能吃山竹 如何在excel中批量加入数据 在Excel中怎样批量加上一? 什么是溢出攻击? 阎罗传奇是什么侯拍的 现在有必要戴口罩吗 buffer overflow是怎么回事? 缓冲区溢出攻击是什么意思 什么是缓冲区溢出漏洞? 缓冲区溢出攻击原理是? 缓冲区溢出是什么意思? 关于电脑!什么是“缓冲区溢出”? 怎么进行缓冲区溢出攻击? 树的年轮较密的向着( )面,较疏的向着什么面? 如何理解缓冲区溢出攻击? 什么是缓冲区溢出 百度云登录时为什么显示网络异常,十分钟后登录 在大兴安岭,大叔年轮较密的一面向着什么方,较疏的一面向着什么方向 百度云网络异常 百度云为什么总是等待网络? 为什么电脑的百度云老是显示“网络不给力,请稍后重试” 梦见在海滩上捡了超多硬币 昨晚做梦在水里捡到好多硬币,是不是发财梦。 陈泰鸣的介绍 阎罗传奇中主题曲是谁唱歌 缓冲区溢出攻击的2.危害 睡觉旁边放两芒果对睡眠有影响吗 阎罗传奇的主题曲是什么歌??? 缓冲区溢出的防范方法 很早的一部古装片 溢出攻击的原理 买的吃的芒果放在房间会影响睡眠吗 芒果的气味能安神助眠吗? 阎王传奇第几级阎王封王 夏天吃什么水果有助于失眠? 睡觉前吃水果有坏处吗? 各位网友求几部关于:孟婆、牛头马面、黑白无常、或者是关于神仙以及地府方面的神话电视剧!谢谢! 热血传奇BOSS名称集? 吃芒果会引起头晕吗? 凌晨一点半至两点吃水果会对身体有危害吗 一个手机号不是我名字,怎样下载微信 关于六一儿童节的刮画作品 刮画对幼儿有什么好处