网站大量收购闲置独家精品文档,联系QQ:2885784924

网络攻防原理与技术(第3版)课件:缓冲区溢出攻击.pptx

网络攻防原理与技术(第3版)课件:缓冲区溢出攻击.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共127页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;内容提要;概念;缓冲区溢出的根源;发展历史;发展历史;危害性和普遍性;危害性和普遍性;安全漏洞数量(CERT);近年来,虽然缓冲区溢出漏洞的数量占比有所减少,但仍然是一类危害性极大的、数量众多的安全漏洞;内容提要;三种内存分配模式(1);三种内存分配模式(2);三种内存分配模式(3);三种内存分配模式比较;内存布局(Linux);进程内存布局;进程内存布局;缓冲区溢出攻击原理;缓冲区溢出攻击原理;缓冲区溢出攻击原理;主要分为:

堆栈溢出

堆溢出

BSS段溢出

格式化字符串溢出攻击;一、堆栈溢出;堆栈的相关概念;堆栈布局;函数调用过程;函数调用时堆栈处理规定;函数调用的栈帧变化;假设有一个程序,其函数调用顺序如下:

main()-func_1()-func_2()-func_3();C语言函数调用例子;C语言函数调用过程;C语言函数调用过程;缓冲区溢出攻击的原理;;堆栈溢出代码1;堆栈溢出示例代码1;堆栈溢出示例代码1;改变堆栈活动记录中的函数返回地址;堆栈溢出示例代码2;堆栈溢出示例代码2;改变函数指针变量;堆栈溢出示例代码3;堆栈溢出示例代码3;ShellCode;ShellCode;

堆栈溢出过程分析示例;示例环境:

操作系统:Windows7ProfessionalServicePack1

编译器:VC++6.0

目的:掌握动态调试方法,理解函数调用过程中堆栈和关键寄存器的变化以及堆栈溢出原理

;源代码:

;溢出过程分析;溢出过程分析;堆栈变化过程;溢出过程分析;堆栈变化过程;溢出过程分析;溢出过程分析;溢出过程分析;堆栈变化过程;溢出过程分析;堆栈变化过程;堆栈变化过程;堆栈变化过程;溢出过程分析;堆栈变化过程;溢出过程分析;堆栈变化过程;溢出过程分析;堆栈变化过程;溢出过程分析;堆栈变化过程;溢出过程分析;堆栈变化过程;二、堆溢出;堆溢出;堆的特点

堆的增长方向:从底到高(与栈相反)

堆的分配和释放可以由用户自由控制

堆的空间不一定连续

堆申请函数返回指向堆内存的指针,后续对于内存的读写等操作需要通过此指针进行

不同的系统有着不同的堆管理机制;Linux堆;Linux堆;堆表用来索引堆块,表中包含索引堆块的大小、位置、状态等信息

位于堆区的起始位置,堆表分为两种空闲双向链表Freelist(空表128条??和快速单向链表Lookaside(快表最多只有四项);堆块分配可以分为三类:快表分配、普通空表分配和零号空表(free[0]分配);释放堆块的操作包括将堆块状态改为空闲,链入相应的堆表。;当堆管理系统发现两个空闲堆块相邻时,就会进行堆块合并操作,包括,将堆块从链表中卸下、合并、调整新堆块块首信息、重新链入空表;堆溢出是指程序向某个堆块中写入的字节数超过了堆块本身可使用的字节数(之所以是可使用而不是用户申请的字节数,是因为堆管理器会对用户所申请的字节数进行调整,这也导致可利用的字节数都不小于用户申请的字节数),因而导致了数据溢出,并覆盖到物理相邻的高地址的下一个堆块;前提条件:

程序向堆上写入数据

写入的数据大小没有被良好地控制

利用策略

覆盖与其物理相邻的下一个chunk的内容

利用堆中的机制(如unlink等)来实现任意地址写入(Write-Anything-Anywhere)或控制堆块中的内容等效果,从而来控制程序的执行流;用精心构造的数据去溢出下一个块的块首,改写块首中的前向指针和后向指针,这种能够向内存任意位置写入任意数据的机会叫DWORDSHOOT;intremove(ListNode*node)

{

??????node-blink-flink=node-flink;

?????node-flink-blink=node-blink;

}

;;触发unlink

绕过系统保护;堆溢出实例;堆溢出实例;堆溢出实例;堆溢出实例;堆溢出;堆溢出;三、BSS段溢出;BSS溢出;内容提要;防御策略;1、关闭不需要的特权程序;2、及时给程序漏洞打补丁;3、编写正确的代码;4、非执行的缓冲区;5、数组边界检查;6、指针完整性检查;7、其它防御方法;两类防护技术

被动防护技术:典型代表有插入canary值、存储RETADDR值、指针前后加guardzone和低脂指针

主动防护技术:更换动态链接库、加密指针型数据、随机化内存地址、去堆栈布局可预测性.;缓冲区溢出攻击防御技术;;;缓冲区溢出攻击防御技术;DEP与ASLR;微软堆栈硬件保护;微软堆栈硬件保护;微软堆栈硬件保护;;作业;一、整数溢出;整数溢出:当一个整数值大于或者小于其范围时,就会产生“回绕”,即溢出。

整数:有符号整数(最高位用0表

您可能关注的文档

文档评论(0)

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

中医资格证持证人

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

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档