缓冲区溢出攻击的分析

所谓缓冲区溢出攻击,就是一种利用目标和程序的缓冲区溢出漏洞,通过操作目标程序堆栈并暴力改写其返回地,从而获得目标探制权的攻击手段。

(1)缓冲区溢出攻击的内存模型。为了理解缓冲区溢出的本质,需要先对程序运行时计算机中的内存是如何分配的所以认识。一般而言,操作系统会分配给第一个进程***的虚拟地址空间,它们是实际空间的映射。当编译后的C程序运行时,内存将被划分为代码区、数据区和堆栈区。其中代码区的数据区构成表态内存,在程序运行之前这些部分的大小已经固定,而与之相对的则是动态的堆栈区内容:堆和堆栈。在C程序中,堆栈和堆都可以被利用来进行溢出。在C程序中,每当调用函数时,就会自动处理堆栈分配。堆栈起到了保存有关当前函数调用上下文的容器的作用,许多内容都可能进入堆栈区,通常其内容与计算机体系结构和编译器相关。一般而言,如下内容都将被储存在堆栈中:函数的非静态局部变量值、堆栈基址、当函数返回时程序就该跳转到的地址以及传递到函数中的参数。当发生函数调用时,编译器所执行的步骤如下:

①调用者。首先,调用者将被调用的函数所需的所有参数都压入堆栈,之后堆栈指针自动更改到指向当前栈顶。接着随着系统不同,调用者可能压入一些其他数据来保护现场。完成后,调用都使用调用指令来调用数,调用指令将返回地址(IP)压入堆栈,并相应更新堆栈指针。最后,调用指令将程序计数器设置为正被调用的函数地址,执行权交给被调用函数。进入第二步操作。

②被调用者。首先,被调用者将堆栈基址指针(BP)寄存器内容压入堆栈来保存调用者的堆栈基址,并更新堆栈指针到旧的基址。然后设置BP内容为自己的堆栈基址,亦即当前的真人真事指针。然后,被调用者按照局部变量的声明移动堆栈指针,为所有非静态局部变量分配足够的空间,执行被调用函数的操作。

③调用函数结束。当被调用函数执行完毕后,调用者更新堆栈指针以指向返回地址IP,调用返回指令将程序控制权交给返回地址上的程序,然后恢复被保存的运行环境。

从以上的过程中可以看到,发生函数调用时的堆栈分配过程中,非静态局部变量缓冲区的分配和填充不是同时进行的,并且依据不同的标准。局部变量缓冲区的分配是依据局部变量的声明,而填充则是依据其实际被赋予的值,由此引发了安全漏洞。

(2)缓冲区溢出攻击的工作原理。根据上一节的讨论,当实际输入的局部变量值的长度超出缓冲区长度,而程序中又缺乏边界检查机制时,数据就会继续向栈底写入,导致栈中老的元素被覆盖。而被改写的将是栈基址BP和返回地址IP,这样缓冲区溢出攻击就可以实现了。只要在程序运行时传送给它一个足够大的参数,就可以在返回地址中填入一个希望程序转向的任意内存地址,从而近代制了程序的运行权。而且此时拥有的权限与运行程序所需的权限相同。这就是缓冲区溢出攻击的原理。实际操作中还存在两个问题:

①攻击代码植入目标程序地址空间。这可以通过以下两种方法来解决:利用已经存在的代码。可以利用被攻击的程序中的代码来达到攻击目的。此时,攻击者只需对代码传递指定参数,将代码植入堆栈区或数据区,然后使程序控制权转给目标代码。常见的方法是通过溢出代码传送攻击代码,此时攻击代码将出现在堆栈局部变量缓冲区中;另一种方法是将攻击代码存方在变量值中,此时攻击代码将被存方在数据区中。

②改写返回地址为攻击代码地址以获得程序控制权。由于程序的堆栈区起始地址是固定的,因此很容易获得堆栈起始地址。但对于攻击代码的精确地址则需要仔细分析目标程序的反汇编代码蔌多次试验来得到。对此,可以在攻击代码前插入大量空操作来大大降低其难度。这样,只要得到了攻击代码的近似地址而非准确地址,就可以使攻击代码运行。实践证明,这可以相当有效地减少定位攻击代码所需的时间,然后只要溢出一个没有边界检查的缓冲区,以暴力手段改写返回地址IP就可以了。

实际上,常见的缓冲区溢出攻击都是一次完成攻击代码植入和程序转向攻击代码两种功能。攻击者找到一个溢出漏洞,然后向被攻击程序传送一个很大的字符串(其中包括攻击代码),在引发缓冲溢出的同时植入了攻击代码,这就是缓冲区溢出的Levy攻击模版。当然,也可以通过多次完成代码植入和缓冲区溢出的动用,可以在一个缓冲区内放置代码而不溢出它,之后再通过溢出另一个缓冲区来来将程序指针定位到攻击代码。这种方法一般用来解决可供溢出的缓冲区不足以容纳全部攻击代码的问题。

缓冲区溢出攻击的分析

转载请注明出处学文网 » 缓冲区溢出攻击的分析

学习

物联网的应用

阅读(34)

本文为您介绍物联网的应用,内容包括物联网的描述与应用,物联网技术与应用中文摘要。摘要:物联网是继计算机、互联网与移动通信网之后的又一次信息产业浪潮,是一个全新的技术领域。它的出现将给人们的日常生活带来巨大的变化。本文阐述了

学习

我在看你,你在笑

阅读(26)

本文为您介绍我在看你,你在笑,内容包括我喜欢看你笑的样子,一见你就笑小说全文免费阅读。八月阵雨停歇之后的傍晚,天边堆着淡淡的晚霞,车开到云顶路的路口时,余乔又决定掉头去南山一趟。

学习

清朝第一品茶师

阅读(22)

本文为您介绍清朝第一品茶师,内容包括清朝出现的品茶艺术,品茶师讲解大全。袁枚善于辨茶。65岁以后,袁枚开始游遍名山大川,浙江的天台、雁荡、四明、雪窦等山,安徽黄山、江西庐山等地,尝遍各地名茶,并且记载下来。他描写常州阳羡茶:“茶深碧色

学习

商业银行中间业务

阅读(14)

本文为您介绍商业银行中间业务,内容包括银行的中间业务有哪些,中间业务收入下降原因。摘要:该文通过对中国商业银行发展历史的回顾,论述现今国内商业银行从另一个“当铺”发展成另一个“票号”的趋势俨然成为历史的必然。通过对银行卡类、

学习

何谓改革?

阅读(44)

本文为您介绍何谓改革?,内容包括改革的深层含义是什么,改革含义。“改革”一词首见于《后汉书》之《梁统传》和《黄琼传》,皆指对已有成规的改动变易。自此以后,“改革”遂成习见之词,而且其词义越来越宽泛,凡对原有制度、惯例、习俗甚至文

学习

日语的暖昧性与日语教学

阅读(15)

本文为您介绍日语的暖昧性与日语教学,内容包括基础日语教学中的问题,日语教学词汇。摘要:暧昧性是日本语言文化中最重要的特点之一,也是其区别于其他语言的一大特征。日语的暧昧性在日本人日常生活交际中到处可见。本文具体介绍日常交际中

学习

浅析《像我这样的一个女子》中“我”的命运悲剧

阅读(44)

本文为您介绍浅析《像我这样的一个女子》中“我”的命运悲剧,内容包括浅析悲剧命运,浅析生死场中金枝的悲剧命运。本文通过对《像我这样的一个女子》中“我”的命运分析,从职业、爱情、社会地位等方面,展示了“我”所逃脱不了的命运悲剧,并

学习

品牌之路 第8期

阅读(24)

本文为您介绍品牌之路 第8期,内容包括品牌之路语录,品牌之路第一步是什么。江苏AB集团公司前身是昆山正仪针织内衣厂,一家名不见经传的、为上海企业代工的乡镇小厂。1987年初,其掌门人周惠明果敢引进中纺大陈美华教授的抗菌技术,开辟了一条

学习

废旧塑料瓶“变废为宝”

阅读(20)

本文为您介绍废旧塑料瓶“变废为宝”,内容包括塑料瓶变废为宝创意手工,塑料瓶把手变废为宝做法。塑料瓶的使用越来越常见,大量塑料瓶用完后被随意丢弃,造成了资源浪费与环境污染。

学习

30个绝对有用的省钱妙招

阅读(17)

本文为您介绍30个绝对有用的省钱妙招,内容包括30条人人都适用的省钱技巧,30个省钱的小妙招。1.尽量减少在昂贵速冻食品方面的花费。你可以在周末的时候自己制作主食,然后存放在冰箱里,以省去买面包和速冻水饺的钱。

学习

浅谈汽车电动助力转向系统

阅读(25)

本文为您介绍浅谈汽车电动助力转向系统,内容包括电动助力的车需要转向助力油吗,汽车电动助力转向系统发展现状。摘要:转向系统是汽车的主要子系统之一,近年来,汽车电动助力转向系统(简称为“EPS”)已成为现代汽车中的常规配置,是一种直接依靠

学习

我国的黄土地貌

阅读(33)

本文为您介绍我国的黄土地貌,内容包括我国有哪些黄土地貌,描写黄土地貌的地理文章。黄土地貌是在黄土堆积的过程中或黄土堆积以后,受到其它地貌营力的作用,如流水的切割作用等形成的一系列独特的地貌形态,由于这种地貌的物质基础是黄土,故称

学习

医用功能纤维的分类及生产方法

阅读(33)

本文为您介绍医用功能纤维的分类及生产方法,内容包括医用功能纤维的特征,神经纤维按功能分类有哪几种。摘要本文主要介绍了医用功能纤维材料的加工方法、主要用途,以及该纤维在国内外发展现状和未来发展前景。

学习

瓶颈工序前缓冲区设定方法研究

阅读(16)

摘要文章旨在探索时间缓冲与物料缓冲在保护生产线瓶颈问题中的优劣性。本文以A机械加工厂的一条生产线为基础,结合其最近的生产任务为例,运用最优生产技术与约束理论的方法进行分析,找到该生产线的瓶颈工序,并运用仿真软件模拟设置时间缓冲

学习

实战格斗之主动攻击

阅读(19)

本文为您介绍实战格斗之主动攻击,内容包括格斗要怎么去主动攻击,主动攻击格斗实战。一、硬打硬进,连环攻击

学习

如何有效攻击对手的弱点

阅读(38)

本文为您介绍如何有效攻击对手的弱点,内容包括市场挑战者集中优势攻击对手弱点,抓住对手的弱点还是有机会的。对于广大的需要寻找机会、空间以生存和发展的弱势品牌们来讲,需要寻找弱竞争的新领域,所以一些市场新领域的开辟往往是中小企业

学习

人体要害攻击术

阅读(23)

本文为您介绍人体要害攻击术,内容包括人体最致命的要害在哪,要害是指人体哪个器官。人体要害就是人体最为脆弱的部位,要害一旦遭受外力打击,非死即伤,非同小可。本文从“特种兵单兵战斗技能”角度解说一些易用有效的人体要害攻击技术。