- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
典型的软件漏洞
缓冲区溢出漏洞
Web应用程序漏洞竞争条件
数据安全漏洞
目录
CONTENTS
章节Part
01
3.1缓冲区溢出漏洞
●函数栈帧结构●堆和栈
●函数调用原理
●缓冲区溢出漏洞原理
●栈溢出漏洞
●堆溢出漏洞
●格式化串漏洞
●弥补及防御
●著名漏洞
3.1.1函数栈帧结构
一个PE文件(可执行文件)运行过程中,通过层层调用相关函数实现特定功能。
C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。
同一个进程中的函数栈帧连续存放,这就为缓冲区溢出攻击提供了可能。
①ESP:栈指针寄存器(extendedstack
pointer),其存放的是当前栈帧的栈顶指针。
②EBP:基址指针寄存器(extededbase
pointer),其存放的是当前栈帧的栈底指针。
缓冲区
局部变量
前栈帧EBP
返回地址参数
缓冲区
局部变量
前栈帧EBP
返回地址参数
ESP寄存器
EBP寄存器
3.1.1函数栈帧结构
当前栈帧
原始栈帧
函数栈帧分布图
栈帧生长方向
低地址
高地址
3.1.2堆和栈
堆在内存中由下向上增长,而栈是向下增长。程序调用过程中,函数的栈帧就存放在栈中,因此函数栈帧是向下增长的。内存中,函数的数据存放在缓冲区中,缓冲区是函数栈帧中的一部分。
a)通用
b)UNIX
c)Win32
内存始址Code(代码)
Text(文本)
ReservedbyOS(操作系统保留)
Data(数据)
Data(数据)
Stack(栈)
Heap(堆)
BSS
Heap(堆)
Heap(堆)
Code(代码)
Constants(常量)
Staticvaiables(静态常量)
内存终址Stack(栈)
Stack(栈)
Uninitializedvariables(未初始化的变量)
3.1.2堆和栈
堆和栈在进程内存中的分布
3.1.3函数调用原理
进程执行过程中,为主函数分配栈帧,主函数调用其他函数,为它们申请栈帧并存放在主函数栈帧之后,函数再调用其他函数时,就作为母函数为子函数申请栈帧,子函数执行完后按照栈帧中保存的返回地址返回母函数,层层递进之后完成进程功能。
3.1.3函数调用原理
进程中的函数调用主要通过以下几个步骤实现:
a)参数入栈:将被调用函数的参数按照从右向左的顺序依次入栈。
b)返回地址入栈:将call指令的下一条指令的地址入栈。
c)代码区跳转:处理器从代码区的当前位置跳到被调用函数的入口处。
d)栈帧调整:这主要包括保存当前栈帧状态、切换栈帧和给新栈帧分配空间。
代码空间:执行到main代码区的call指令时,跳转到
funca的代码区继续执行
系统栈空间:为配合funca的执行,在系统栈中为其开辟新的栈帧并压入
代码空间:程序被装入,由main函数代码空间依次取指执行
系统栈空间:系统栈栈顶为当前正在执行的main函数栈帧
3.1.3函数调用原理
函数调用原理
3.1.4缓冲区溢出的原理
在栈帧中分配有固定的缓冲区空间,当用户输入的数据长度超出缓冲区范围,就有可能覆盖其他有用的数据,从而导致不可预测的情况发生。
如果输入的数据经过精心的设计,就可以达到特定的目的,比如植入恶意代码,将函数返回到特定的节点执行,或者执行其他的操作。
缓冲区
bufferdata
3.1.4缓冲区溢出的原理
data
返回地址
ebp
滥出区
数据
栈增长方向
拷贝
3.1.5栈溢出漏洞
函数栈中存放的一般是函数定义的变量等数据,通过对变量赋值可以实现栈溢出,通过栈溢出覆盖返回函数可使函数返回到特定节点。
上述过程虽然理论上能完成栈溢出攻击行为,但是实际上很难实现。操作系统每次加载可执行文件到进程空间的位置都是无法预测的,因此栈的位置实际是不固定的,通过硬编码覆盖新返回地址的方式并不可靠。
更普遍的做法是使用跳板。
操作系统
栈
堆
数据段
代码段
0shellcode
特殊地址
缓冲区
buffer
3.1.5栈溢出漏洞
0xffffffff
栈溢出攻击
PC
jmpesp
跳板
栈增长方向
3.1.6堆溢出漏洞
和栈不同,堆的数据结构并不是由系统(无论是机器系统还是操作系统)支持的,而是由函数库提供的。基本的malloc/realloc/free函数维护了一套内
您可能关注的文档
- 《园林植物识别与应用》第3章 灌木类被子植物.pptx
- 《原始记录管理》课件.pptx
- 《在民族复兴的历史丰碑上》(31张PPT).pptx
- 《车路协同系统装调与测试》教学课件.pptx
- 《城市轨道交通环控与消防系统运行维护》课程标准.docx
- 《橱窗设计案例》课件.pptx
- 《传染病护理学》考核试题及答案(共100题).docx
- 《搭石》类文阅读+同步练习(附答案)五年级上册部编语文.docx
- 《大学生入学教育》高职PPT完整全套教学课件.pptx
- 《地学遥感》全套教学课件.pptx
- 2024年公司团支部工作总结格式怎么写6篇.docx
- 上海市黄浦区卢湾中学2025届数学八年级第一学期期末综合测试试题含解析.doc
- 2024年采购工作总结报告8篇.docx
- 合肥市重点中学2025届数学八年级第一学期期末质量跟踪监视试题含解析.doc
- 思念唯美感言PPT.pptx
- 2025届辽宁省抚顺市新抚区八年级数学第一学期期末联考模拟试题含解析.doc
- 2025届贵州省铜仁市思南县八年级数学第一学期期末综合测试试题含解析.doc
- 2024年体检中心护士上半年总结8篇.docx
- 2025届浙江省温州市鹿城区第二十三中学数学八上期末预测试题含解析.doc
- 2025届浙江省嘉兴地区数学八年级第一学期期末考试试题含解析.doc
最近下载
- 慢性阻塞性肺病伴有急性下呼吸道感染护理查房.pptx
- 肺结核合并糖尿病(共23张PPT)【23页】.pptx
- 慢性阻塞性肺疾病护理疑难病历讨论.pptx VIP
- 安全管理体系与措施及环境保护管理体系与措施 .doc VIP
- 食材配送分拣管理制度内容.docx VIP
- 上汽通用雪佛兰-迈锐宝XL-产品使用说明书-全混动锐尊版-SGM7186EACHEV-17MYCHE2SCSOM26248143_20170629.pdf
- (完整版)软件项目开发计划书.pdf
- 增程式燃料电池电动汽车动力系统设计研究.pptx VIP
- 【增程式电动汽车能量管理策略研究开题报告文献综述5600字】.doc VIP
- 牛津上海版小学英语5年级下册 Module 3 Unit 3 Changes 公开课PPT课件12.ppt
文档评论(0)