缓冲区溢出攻击的原理与实践

缓冲区溢出攻击的原理与实践

ID:28459772

大小:382.49 KB

页数:12页

时间:2018-12-10

缓冲区溢出攻击的原理与实践_第1页
缓冲区溢出攻击的原理与实践_第2页
缓冲区溢出攻击的原理与实践_第3页
缓冲区溢出攻击的原理与实践_第4页
缓冲区溢出攻击的原理与实践_第5页
资源描述:

《缓冲区溢出攻击的原理与实践》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程设计任务书计通学院网络工程专业课程名称网络管理与安全课程设计时间2014〜2015学年第一学期1〜2周学生姓名指导老师向凌云题目缓冲区溢出攻击的原理与实践主要内容:了解缓冲区溢出的类型,掌握缓冲区溢出攻击原理。设计一个缓冲区溢出的简单实例程序,编写shellcode,利用缓冲区溢出程序自动运行另一个程序,从而实现缓冲区溢出攻击,最后对攻击过程进行详细分析。要求:(1)综合运用计算机网络管理和信息安全知识。(2)学会文献检索的基本方法和综合运用文献的能力。(3)独立完成任务书规定的任务并按要求编写课程设计报告

2、书。(4)通过课程设计培养严谨的科学态度,认真的工作作风和团队协作。皮当提交的文件:(1)课程设计报告。(2)课程设计附件。一、缓冲区溢出概念1、缓冲区溢出:指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区乂被称为"堆栈在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。2、缓冲

3、区最常见的攻击手段是通过制造缓冲区溢出使程序运行一个用户shell,在通过shell执行其他命令.若该程序输入root且有suid权限的话,攻击者就获得了一个有root权限的shell,此时就可以对系统进行随意操作了.下面我来介绍一下如何控制程序跳转到攻击代码①打开记录(ActivationRecords)在程序中,每一个函数调用发生,在堆栈中会留下一个ActivationRecords,它包括函数结束时返回的地址,攻击者通过溢出这些自动变量,使地址指向攻击程序代码.通过改变程序的返回地址,当调用结朿时,程序就

4、跳到攻击者设定的地址,而不是原地址.这类溢出被称为stacksmashingattack.②函数指针(FunctionPointers)void(*foo)(1)定义一个返回函数指针的变量foo,FunctionPointers可用来定位任何地址空间.所以只需在任何空间内的FunctionPointers附近找到一个能溢出的缓冲区,然后溢出它来改变FunctionPointers.在某时刻,当程序通ilFunctionPointers调用函数吋,程序的流程就按黑客的意图实现了(典型的溢出程序有:Linux下的S

5、uperprobe程序).③长跳转缓冲区(Longjmpbuffers)在C语言中,含了一个简单的检验/恢复系统,称为setjmp/longjmp.即在检验点设定setjmp(buffer),用longjmp(buffer)恢复.但若攻击者能够进入缓冲区空间,则longjmp(buffer)实际上跳转到攻击者的程序代码.像FunctionPointers,longjmp缓冲区能指向任何地方,所以攻击者要做的就是找到一个可供溢出的buffer即可.最常见的是在一个字符串中综合了代码植入和打开记录.攻击者定位或提供

6、溢出的自动变量,然后向程序传一个超大字符串,在引发buffer溢出改变打开记录时植入程序代码,由此达到入侵系统的目的.二、缓冲区溢出实例实现原理1、堆栈的组成:正常时的堆栈惜况内存低址-原EIP0x616263640x65666768...耳B.P的值...宸EEP的桓EBP■••••••••■•垂«■内存高址阁2.1堆栈由数据存储区、EBP(栈底指针)、EIP(指令寄存器,指向下一条指令的地址)2、漏洞利用程序详细分析:正常时的堆栈情况iAj存低址vi0x61626364I洞利用程我扪需芳IP),召的奴溢出后

7、的阁2欠超过内存低址旨向tr、jr堆栈情况Dcba0x61626364地址笠I;EBP的值+前4个划原EIP的值我米顺:1貝,込忏wr—〉JM去执行JMPESP,这样i内存高址>HgfEbp>EIPar0x61626364个字节,0x61626364P的地*0x696a6b6c"IEIP10x6d6e6f70声程序扒•/使其溢出z数量的値那么址就'都占卜地t..一空

8、'日DebaLkjiPonm一个shellcode的代码,这样我P、J存尚址要够警的所iSP粥"缓JMPESPiftlit源EIP)505152图

9、2.3三、缓冲区溢出实例实现过程步骤1:编写一个漏洞分析代码<程序一〉//name[0]-name[3]//name[41-name[71//EBP//EIPinclude"stdio.h”#include"string.h"#include’’windows.h’charnamelJ="x41x41x41x41Mnx41x41x41x41H,'x6ax6bx6c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。