- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4-2systemattack缓冲区溢出(ver.2)
系统攻击 缓冲区溢出 本节主要内容 一、系统漏洞及其分类 二、缓冲区溢出 三、系统漏洞的一般防范 系统漏洞 所谓的安全漏洞简单来说就是可能导致安全问题的设计缺陷 安全漏洞有着多方面的属性,包括漏洞可能造成的直接威胁、漏洞利用的方式、漏洞的成因、漏洞的严重性等 漏洞分类-直接威胁 远程管理员权限 本地管理员权限/权限提升 普通用户访问权限 远程非授权文件存取 本地非授权文件存取 漏洞分类-直接威胁 远程拒绝服务 本地拒绝服务 口令恢复 服务器信息泄露 第二节 缓冲区溢出 一、系统漏洞及其分类 二、缓冲区溢出攻击 三、系统漏洞的一般防范 二、缓冲区溢出攻击 1、什么是缓冲区溢出? 缓冲区 从程序的角度,缓冲区就是指应用程序用来保存用户输入数据、程序临时数据的内存空间。 缓冲区溢出 如果用户输入的数据长度超出了程序为其分配的内存空间,这些数据就会覆盖程序为其它数据分配的内存空间,形成所谓的缓冲区溢出。 缓冲区溢出的危害 应用程序异常 系统不稳定甚至崩溃 二、缓冲区溢出攻击 2、缓冲区溢出攻击 缓冲区溢出的攻击 Q:攻击者如何做到不仅仅让程序出错,而且让程序改变其原有的逻辑,转而去执行一些攻击者所期望的功能? 关于程序运行 程序所使用的内存空间 程序使用的内存空间 程序在运行时,代码和数据是分开存放的 程序使用的运行空间 程序的数据区还可以细分为 栈(Stack):存放函数局部 堆(Heap):存放程序中动态申请的变量 静态数据段:存放全局和静态变量 关于程序运行 程序中顺序流程的执行 顺序流程 EIP指针指向内存中一条待执行的指令 关于程序运行 程序中顺序流程的执行 函数调用 堆栈中的数据 在一次函数调用中实际会保存在堆栈中的数据包括:调用者参数、EIP的值、EBP的值 堆栈溢出 如果在堆栈中发生缓冲区溢出,极可能使的堆栈所保存的EIP指针值被改变。也即程序原有流程被改变。 溢出示例 例一:复制字符串时溢出 例二:读入文件时溢出 缓冲区溢出攻击 A:在堆栈产生溢出时,EIP指针将被我们输入的数据所改变。如果精心设计这些的数据,可以让EIP指针指向我们所放置的额外数据,而这些数据将以指令的形式进入CPU运行。 更一般的攻击 在程序空间中安排合适的攻击代码 让程序跳转到代码处执行 攻击代码 攻击代码是一段精心设计的二进制代码,以数据的形式放入程序的某个缓冲区中 由于可利用的缓冲区的实际空间有限,因此实用的攻击代码一般仅实现简单有效的功能 安排攻击代码 植入法 利用程序中已有代码 程序流程的跳转 覆盖堆栈中保存的EIP指针 覆盖函数指针变量 二、缓冲区溢出攻击 1、什么是缓冲区溢出 2、缓冲区溢出攻击 防止缓冲区溢出 非执行缓冲区 保证代码正确性 数组边界检查 指针完整性检查 第二节 缓冲区溢出 一、系统漏洞及其分类 二、缓冲区溢出攻击 三、系统漏洞的一般防范 普通用户的防范 对于一般用户而言,应关闭一切不必要的服务,对于必须开放的服务一定要及时更新补丁。 * * 1、什么是缓冲区溢出 CPU 数据 代码 程序所使用的内存空间 数据 代码 ADD A,B CPU EIP寄存器 指令译码器 ADD A,B ADD A,B 运算器 MOV EAX,05H ADD A,B ADD A,B ADD A,B ADD A,B MOV EAX,05H MOV EAX,05H MOV EAX,05H MOV EAX,05H MOV EAX,05H MOV EAX,05H 函数调用及返回时的堆栈操作 程序所使用的内存空间 main函数入口 堆栈 内存低端 内存高端 main函数的数据 call func EIP寄存器 func函数入口 … … … … 004010C5 004010CC 0040110D1 return … … 参数 0040110D1 buff 004011110 0040110D1 0040110D1 0040110D1 0040110D1 0040110D1 0040110D1 0040110D1 0040110D1 0040110D1 0040110D1 0040111D1 栈底 栈顶 3、从根本上防止缓冲区溢出攻击
原创力文档


文档评论(0)