- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 缓冲区溢出攻击主编:黄晓芳副主编:孙海峰 左旭辉高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.1 缓冲区溢出基本概念 缓冲区是程序运行的时候机器内存中用于存放数据的临时内存空间,它的长度事先已经被程序或操作系统定义好。缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为一段可读写的内存区域。高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2 缓冲区溢出攻击方式目前的缓冲区溢出攻击,可以按照以下方法进行分类:(1)按照溢出位置分类:栈溢出、堆溢出和BSS段溢出。(2)按照攻击者欲达到的目标分类:在程序的地址空间里植入适当的代码以及通过适当地初始化寄存器和存储器从而控制程序转移到攻击者安排的地址空间去执行。(3)按照攻击目标分类:攻击栈中的返回地址、攻击栈中保存的旧框架指针、攻击堆或BSS段中的局部变量或参数、攻击堆或BSS段中的长跳转缓冲区。高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2.1 栈溢出攻击原理 栈是一种数据结构,是一种先进后出的数据表。在Windows 平台下,寄存器“EBP”和“ESP”分别指向当前栈帧的栈底和栈顶。函数调用时,一般需要经过以下步骤: 1)参数入栈:参数按一定的顺序压入系统栈,在Std Call约定的情况下,从右到左的顺序压入系统栈。 2)返回地址入栈:将当前代码区调用指令的下一条指令存入栈中,函数返回时,继续执行。 。 高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材3)指令代码跳转:中央处理器从当前的代码区跳转到被调用函数的入口处。在示例代码中,就是跳转到function函数的入口。示例代码
void function(char * p)
{
char out[10];
strcpy(out,p);
}
/*主函数*/
main()
{
char a[]=”AAAABBBBCC”;
function(a);
} 4) 栈桢调整:首先保存当前栈桢,也就是将前栈桢压入栈,将当前栈桢切换到新栈桢,为新的函数栈桢分配存储空间。被调用函数执行完之后,返回到调用函数继续执行,包括以下步骤: 保存返回值:通常将函数的返回值传给EAX寄存器。 恢复栈顶:在堆栈平衡的基础上,弹出原先保存的EBP值,并修改ESP值,使调用函数的栈桢成为系统当前栈桢。 指令地址返回:将先前保存的函数返回地址传给指令指针寄存器。函数调用时栈桢变化图高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2.2 堆溢出攻击原理 所谓堆,就是由应用程序动态分配的内存区。操作系统中,大部分的内存区是在内核一级被动态分配的,但段是由应用程序来分配的,它在编译的时候被初始化。非初始化的数据段用于存放程序的静态变量,这部分内存都是被初始化为零的。在大部分的系统包括系统中,段是向上增长的,向高地址方向增长。 堆管理系统主要有三类操作:堆块分配,堆块释放和堆块合。 堆溢出时单链表在删除节点高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材堆溢出攻击主要有为以下几类。(1)内存变量:修改能够影响程序执行的重要标志变量,例如更改身份验证函数的返回值就可以直接通过认证。 (2)代码逻辑:修改代码段重要函数的关键逻辑,有时可以达到一定的攻击效果。 (3)函数返回地址:通过修改函数的返回地址能够改变程序执行流程,堆溢出可以利用Arbitrary Dword Reset更改函数返回地址。(4)异常处理机制:当程序产生异常时,Windows执行流程会转入异常处理例程。 (5)函数指针:系统有时会使用函数指针,例如C++中的虚函数、动态链接库中的导出函数等。修改这些函数指针后,函数调用时,就可以成功地劫持进程。高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.2.3 流程跳转技术 缓冲区溢出的一个非常关键的步骤就是要实现进程执行流程跳转,这也正是缓冲区溢出攻击的首要目的。只有实现了流程的跳转,才能在被攻击的主机上执行所植入的代码,实现控制被攻击主机的目的。要实现执行流程跳转,攻击者可以通过缓冲区溢出漏洞修改有关执行流程的管理信息,如返回地址。缓冲区溢出攻击示意图高等学校电子信息类“十三五”规划教材应用型网络与信息安全工程技术人才培养系列教材6.3 缓冲区溢出攻击步骤6.3.1 获取漏洞信息 缓冲区溢出漏洞信息的获取,主要有两种途径,一是自己挖掘,二是从漏洞公告中获得。当前,公布漏洞信息的权威机构主要有
您可能关注的文档
- (电子商务教学课件)第四章网络营销.ppt
- (电子商务教学课件)第五章电子商务安全.ppt
- (电子商务教学课件)第一章电子商务概述.ppt
- (工程图样教学课件)第1章制图的基本知识和基本技能.ppt
- (工程图样教学课件)第2章点、直线、平面的投影.ppt
- (工程图样教学课件)第4章组合体.ppt
- (工程图样教学课件)第5章轴测图.ppt
- (连锁经营教学课件)第十章 连锁经营信息管理.ppt
- (连锁经营教学课件)第四章 连锁经营组织结构设计.ppt
- (连锁经营教学课件)第五章 连锁经营人力资源管理.ppt
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
文档评论(0)