- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
缓冲区溢出讲义
缓冲区
缓冲区的实质就是一块内存空间,
dir命令演示:当输入一个不存在的路径时提示”不存在该路径”,但是如果输 入的字符数大于200个发生溢出。
函数调用过程:栈的工作过程
*调用函数前
*把函数参数压栈
*把指令寄存器(EIP)的内容压栈
*将基址寄存器(EBP)压栈
*把当前的栈指针(ESP)赋给基址寄存器(EBP),作为新的基地址
*为本地变量留出一定空间,把ESP减去适当的数值(栈帧大小)
高地址
调用者栈帧调用者的数据IFrame Pointer (%ebp) —?
调用者栈帧
调用者的数据
IFrame Pointer (%ebp) —?
函数参数
返回地址
上一个%ebp
恢复
>刖一
栈帧
Stack Pointer(%esp) 被调用函数保存的寄存器局部变量
Stack Pointer
(%esp)
被调用函数保存的寄存器
局部变量1
栈的
生长 U方向
局部变量n
低地址
缓冲区溢出实例
#includestdio.h
#includestring.h
char name[]=nabcdefgh;
int main()
{
int i;
char output[8];
strcpy(output,name);
for (i=0;i8 output[i];i++) printf(\\0x%x,output[i]);
return 0;
}
将 char name[]=abcdefgh;中的 abcdefgh 替换为 abcdefghijklmnopqrstuvwxyz 则
溢出
修改程序后 name 中的字符变为 “abcdefghijklmnopqrstuvwxyz “,超出了 output 变量中所能容纳的内存空间,原EBP和EIP被” ijklmnop “覆盖,当被“ mnop 覆盖后程序指针指向了新的地址“0x706f6ed”即“mnop”对应的十六进制值, 该值指向的内存地址不存在程序数据,故出现错误提示。
缓冲区溢出攻击基本原理“
(1) 缓冲区溢出问题属于低级语言(C、C++或汇编)中存在的问题,因为 这些语言不是“受控”语言,没有严格的边界检查机制。缓冲区溢出的实质 是由于字符串处理函数(如C语言中的gets、strcpy等)没有对数组的越界 进行监视和处理造成越界的数据覆盖掉其它内存区域造成的。
(2) 缓冲区溢出攻击之所以成为一种常见的攻击手段,其原因在于缓冲区溢 出漏洞普遍并且易于实现,而且缓冲区溢出成为远程攻击的主要手段其原因 在于缓冲区溢出漏洞给予了攻击者所想要的一切,植入并且执行攻击代码。 被植入的攻击代码以一定的权限运行存在缓冲区溢出漏洞的程序,从而得到 被攻击主机的控制权。
(3) 远程溢出威胁最大。
缓冲区溢出种类
1.栈溢出(重点讲解)
*特点
缓冲区在栈中分配,拷贝的数据过长,覆盖了函数的返回地址、函数指 针或其它一些重要的数据结构。
*当调用函数时
Call指令会将返回地址(Call指令下一条指令地址)压入栈,Ret指令会 把压栈的返回地址弹给EIP
*栈溢出攻击的原理
(1) 缓冲区溢出修改栈中的返回地址(ret)
(2) 当函数调用返回,EIP获得被修改后的 断,并执行Shellcode
*关键点:
将修改后的ret填到正确的位置
返回地址能正确地指向Shellcode
堆溢出
*特点
缓冲区在堆中分配,拷贝的数据过长,覆盖了堆管理结构。
*与栈溢出的情况不同,在堆溢出中,攻击者无法控制程序,至少不能直接 控制下一步跳转的位置。
*堆溢出可以理解为将超长的数据复制到动态分配的内存块,超越边界,从 而导致覆盖掉内存块间的管理结构或内存块内容。
整型溢出
宽度溢出(Widthness Overflow)
变量中存储的数值超过了改变量类型所能表示的范围
运算溢出(Arithmetic Overflow)
如果存储值是一个运算操作,稍后使用这个结果的程序的任何一部分都将 错误的运行,因为这个计算结果是不正确的。
符号溢出(Signedness Bug)
一个无符号的变量被看作有符号,或者一个有符号的变量被看作无符号
格式化字符串溢出
*关键字
“%n”
*产生原因
printf()是不定参数输入,并且不检查输入参数的个数
(5)其它溢出
.data section溢出、PEB/TEB溢出、文件流溢出
缓冲区溢出包括以下三种后果
程序没有影响,继续运行;
》程序运行失败;
被黑客利用,使程序转入运行黑客构造的特殊代码。
缓冲区溢出攻击基本原理
堆、栈
堆栈指的是栈,
*栈先进后出,空间有限,因此存储少量数据
*堆长时间存储数据
MSF的主要模块
exploits:是针对不同已知漏洞的利用程序。
payloads:即shellcode,是在
您可能关注的文档
最近下载
- JJF(电子)30306-2010 示波器差分探头校准规范.pdf VIP
- 750t履带吊安装拆卸安装方案.docx VIP
- 2018版肺血栓栓塞症诊治与预防指南.pdf VIP
- 社保扣款银行协议书.docx VIP
- 2025年通城县第二批事业单位公开招聘16名工作人员笔试参考题库附答案解析.docx VIP
- 2025-2026学年统编版三年级道德与法治上册全册教案设计.pdf VIP
- 2025高考数学专项复习:圆锥曲线基础总结、二级结论、方法与技巧.pdf VIP
- 五年级第一次月考试卷.docx VIP
- 第九讲_语言测.ppt VIP
- 2025年新济南版七年级上册生物全册精编知识点(新教材专用).pdf
文档评论(0)