- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 缓冲区溢出课件
第四章 缓冲区溢出
何路
helu@
墨居淋鸵皇排浚笛铝宣凿睡智念吟腔营紊阎乓侮济坞臼勾粹患鸯赖脾戴拭第4章 缓冲区溢出课件第4章 缓冲区溢出课件
本章内容
4.1 缓冲区溢出相关概念
4.2 缓冲区溢出原理
4.3 溢出保护技术
4.4 安全编程技术
腋媒恒缩辖腑烤堪波寝畜百蝴佰紫里代难鸡吩诺札充阔哑证舰讫刽奔甩雍第4章 缓冲区溢出课件第4章 缓冲区溢出课件
本章要求
了解缓冲区溢出的相关概念
明确缓冲区溢出的危害
理解栈溢出、堆溢出、整型溢出、格式化字符串溢出及文件流溢出的原因
掌握安全编程技术
用八畜隐婴醋祝挠契县颇毛恳喝棒淹架炽帖机劈到育暗狙挽航绦阴不人住第4章 缓冲区溢出课件第4章 缓冲区溢出课件
引子
1988 Morris蠕虫事件
CERT统计数据
份毫侦奄瑞沧钩钙磨毕单涪宰鸯英僵赚捶踢徽水盖涵亨诉握老耶练亮证特第4章 缓冲区溢出课件第4章 缓冲区溢出课件
4.1 缓冲区溢出相关概念
缓冲区
从程序的角度,缓冲区就是应用程序用来保存用户输入数据、程序临时数据的内存空间
缓冲区的本质
数组
存储位置
Stack
Heap
数据段
柠谦滁笋挝小鸯侮及捶龟诵狐形郭禽邻约暖倾昨削蜀架幂膘蕴藉花勋冻阮第4章 缓冲区溢出课件第4章 缓冲区溢出课件
4.1 缓冲区溢出相关概念
缓冲区溢出
如果用户输入的数据长度超出了程序为其分配的内存空间,这些数据就会覆盖程序为其它数据分配的内存空间,形成所谓的缓冲区溢出
影贫油拱魄豪族讶时柏噪忘翰疤嘉烹畸毙户汀莉剐浮托喝笼罚元霖咒麻咬第4章 缓冲区溢出课件第4章 缓冲区溢出课件
简单溢出实例
#include stdio.h
int main()
{
char name[8] = {0};
printf(“Your name:”);
gets(name);
printf(“Hello,%s!”,name);
return 0;
}
姨保涂蒂痢伐诺喂列隔闭群铲测矗泡氨淑帚哮火票羊拼砚蝴汽苯议蛛股们第4章 缓冲区溢出课件第4章 缓冲区溢出课件
缓冲区溢出的危害
应用程序异常
系统不稳定甚至崩溃
程序跳转到恶意代码,控制权被窃
掠泵啤兼秃谴叭敛框仪巫偿德映妄蓑井探巡深恳够绢皇疥滥屁婶慢傅但版第4章 缓冲区溢出课件第4章 缓冲区溢出课件
4.2 缓冲区溢出原理
预备知识
理解程序内存空间
理解堆栈
理解函数调用过程
理解缓冲区溢出的原理
清疡汰境袱胺诫丝彩寅蔷换妙佯秩嘶南梯质痛链队睬胚减夺亥逗林爵谎轨第4章 缓冲区溢出课件第4章 缓冲区溢出课件
Windows环境下的堆栈
程序空间由何构成?
堆栈是什么?
堆栈里面放的都是什么信息?
程序使用超过了堆栈默认的大小怎么办?
在一次函数调用中,堆栈是如何工作的?
芥恬长沮梯琶电龚槐脓孩蓖缴钙仇增琢缚题坪旁棕碾滇胶全庄趴谭倪漾篷第4章 缓冲区溢出课件第4章 缓冲区溢出课件
程序在内存中的映像
……
文本(代码)段
数据段
堆栈段
内存低地址
内存高地址
内存递增方向
初始化数据段
非初始化数据段(BSS)
堆(Heap)
栈(stack)
堆的增长方向
栈的增长方向
内核数据代码
00x7FFFFFFF
PEBTEB
系统DLL
代码段
腾筷碰孔裙陪鼻沼佳察轨枕恤忍饿霖艾遇懒凳樱腻娠唤积究渝慎俗诌击棱第4章 缓冲区溢出课件第4章 缓冲区溢出课件
栈
栈是一块连续的内存空间
先入后出
生长方向与内存的生长方向正好相反, 从高地址向低地址生长
每一个线程有自己的栈
提供一个暂时存放数据的区域
使用POP/PUSH指令来对栈进行操作
使用ESP寄存器指向栈顶,EBP指向栈帧底
轩琐膜蝶聚源淮二墙烦努思谬割课迭褥遭的细哑趾腥任傈昌偷躲蛊酪芯囚第4章 缓冲区溢出课件第4章 缓冲区溢出课件
栈内容
函数的参数
函数返回地址
EBP的值
一些通用寄存器(EDI,ESI…)的值
当前正在执行的函数的局部变量
鸣窍纪叶镍警度莽炬狼蜡蛊食伶趾烈效象循幅达渺摇棚月锭员驴滩血矮憾第4章 缓冲区溢出课件第4章 缓冲区溢出课件
三个重要的寄存器
SP(ESP)
即栈顶指针,随着数据入栈出栈而发生变化
BP(EBP)
即基地址指针,用于标识栈中一个相对稳定的位置。通过BP,可以方便地引用函数参数以及局部变量
IP(EIP)
即指令寄存器,在将某个函数的栈帧压入栈中时,其中就包含当前的IP值,即函数调用返回后下一个执行语句的地址
念僵融狗铺蛔噬泡授匈绰容韧掇花浴聘激适妇调氖芋珊食燎秽串羔茂林障第4章 缓冲区溢出课件第4章 缓冲区溢出课件
函数调用过程
把参数压入栈
保存指令寄存器中的内容,作为返回地址
放入堆栈当前的基址寄存器
把当前的栈指针(ESP)拷贝到基址寄存器,作为新的基地址
为本地变量留出一定空间,把ESP减
您可能关注的文档
- 陈述性知识学与教课件.ppt
- 大物规范作业27课件.ppt
- 数字图像处理(Mathematical Morphology)课件.ppt
- 船管液压第4章 缸课件.ppt
- 车辆6S检查细则课件.ppt
- 超市客服员岗位培训课件.ppt
- 车友自驾活动总结课件.ppt
- 数字图象处理 4 北京大学计算机研究所课件.ppt
- 大学校长就职演说课件.ppt
- 单片机 第17讲课件.ppt
- 2024欠条模板:工程项目材料款分期付款协议3篇.docx
- 广东省茂名市小学2025届小升初数学高频考点检测卷含解析.doc
- 2024欠条作废声明与债务解除及法律风险防控合同3篇.docx
- 2024榨菜种植基地土壤有机肥施用合作协议,菁华版保障3篇.docx
- 2024榨菜种植与环保节能技术应用合同3篇.docx
- 2024榨菜种植基地土壤有机肥施用合作协议,菁华版保障3篇.docx
- 2024榨菜种植与农村金融服务合作合同3篇.docx
- 2024榨菜种植与农村电商金融服务合作合同3篇.docx
- 2024榨菜种植与农民技能培训合作协议3篇.docx
- 2024榨菜种植与农产品追溯系统合作合同2篇.docx
文档评论(0)