(网络安全技术原理与实践)第六章缓冲区溢出攻击.pptx

(网络安全技术原理与实践)第六章缓冲区溢出攻击.pptx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 缓冲区溢出攻击主编:黄晓芳副主编:孙海峰 左旭辉高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.1 缓冲区溢出基本概念 缓冲区是程序运行的时候机器内存中用于存放数据的临时内存空间,它的长度事先已经被程序或操作系统定义好。缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为一段可读写的内存区域。高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2 缓冲区溢出攻击方式目前的缓冲区溢出攻击,可以按照以下方法进行分类:(1)按照溢出位置分类:栈溢出、堆溢出和BSS段溢出。(2)按照攻击者欲达到的目标分类:在程序的地址空间里植入适当的代码以及通过适当地初始化寄存器和存储器从而控制程序转移到攻击者安排的地址空间去执行。(3)按照攻击目标分类:攻击栈中的返回地址、攻击栈中保存的旧框架指针、攻击堆或BSS段中的局部变量或参数、攻击堆或BSS段中的长跳转缓冲区。高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2.1 栈溢出攻击原理 栈是一种数据结构,是一种先进后出的数据表。在Windows 平台下,寄存器“EBP”和“ESP”分别指向当前栈帧的栈底和栈顶。函数调用时,一般需要经过以下步骤: 1)参数入栈:参数按一定的顺序压入系统栈,在Std Call约定的情况下,从右到左的顺序压入系统栈。 2)返回地址入栈:将当前代码区调用指令的下一条指令存入栈中,函数返回时,继续执行。 。 高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材3)指令代码跳转:中央处理器从当前的代码区跳转到被调用函数的入口处。在示例代码中,就是跳转到function函数的入口。示例代码 void function(char * p) { char out[10]; strcpy(out,p); } /*主函数*/ main() { char a[]=”AAAABBBBCC”; function(a); } 4) 栈桢调整:首先保存当前栈桢,也就是将前栈桢压入栈,将当前栈桢切换到新栈桢,为新的函数栈桢分配存储空间。被调用函数执行完之后,返回到调用函数继续执行,包括以下步骤: 保存返回值:通常将函数的返回值传给EAX寄存器。 恢复栈顶:在堆栈平衡的基础上,弹出原先保存的EBP值,并修改ESP值,使调用函数的栈桢成为系统当前栈桢。 指令地址返回:将先前保存的函数返回地址传给指令指针寄存器。函数调用时栈桢变化图高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2.2 堆溢出攻击原理 所谓堆,就是由应用程序动态分配的内存区。操作系统中,大部分的内存区是在内核一级被动态分配的,但段是由应用程序来分配的,它在编译的时候被初始化。非初始化的数据段用于存放程序的静态变量,这部分内存都是被初始化为零的。在大部分的系统包括系统中,段是向上增长的,向高地址方向增长。 堆管理系统主要有三类操作:堆块分配,堆块释放和堆块合。 堆溢出时单链表在删除节点高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材堆溢出攻击主要有为以下几类。(1)内存变量:修改能够影响程序执行的重要标志变量,例如更改身份验证函数的返回值就可以直接通过认证。 (2)代码逻辑:修改代码段重要函数的关键逻辑,有时可以达到一定的攻击效果。 (3)函数返回地址:通过修改函数的返回地址能够改变程序执行流程,堆溢出可以利用Arbitrary Dword Reset更改函数返回地址。(4)异常处理机制:当程序产生异常时,Windows执行流程会转入异常处理例程。 (5)函数指针:系统有时会使用函数指针,例如C++中的虚函数、动态链接库中的导出函数等。修改这些函数指针后,函数调用时,就可以成功地劫持进程。高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2.3 流程跳转技术 缓冲区溢出的一个非常关键的步骤就是要实现进程执行流程跳转,这也正是缓冲区溢出攻击的首要目的。只有实现了流程的跳转,才能在被攻击的主机上执行所植入的代码,实现控制被攻击主机的目的。要实现执行流程跳转,攻击者可以通过缓冲区溢出漏洞修改有关执行流程的管理信息,如返回地址。缓冲区溢出攻击示意图高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.3 缓冲区溢出攻击步骤6.3.1 获取漏洞信息 缓冲区溢出漏洞信息的获取,主要有两种途径,一是自己挖掘,二是从漏洞公告中获得。当前,公布漏洞信息的权威机构主要有

您可能关注的文档

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档