缓冲区溢出攻击原理实践

缓冲区溢出攻击原理实践

ID:32852861

大小:411.00 KB

页数:11页

时间:2019-02-16

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

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

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

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

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

4、ointers)  void(*foo)(1)定义一个返回函数指针的变量foo,FunctionPointers可用来定位任何地址空间.所以只需在任何空间内的FunctionPointers附近找到一个能溢出的缓冲区,然后溢出它来改变FunctionPointers.在某时刻,当程序通过FunctionPointers调用函数时,程序的流程就按黑客的意图实现了(典型的溢出程序有:Linux下的Superprobe程序).  ③长跳转缓冲区(Longjmpbuffers)  在C语言中,包含了一个简单的检验/恢复系统,称为setjmp/longjmp.即在检验

5、点设定setjmp(buffer),用longjmp(buffer)恢复.但若攻击者能够进入缓冲区空间,则longjmp(buffer)实际上跳转到攻击者的程序代码.像FunctionPointers,longjmp缓冲区能指向任何地方,所以攻击者要做的就是找到一个可供溢出的buffer即可.  最常见的是在一个字符串中综合了代码植入和打开记录.攻击者定位或提供溢出的自动变量,然后向程序传一个超大字符串,在引发buffer溢出改变打开记录时植入程序代码,由此达到入侵系统的目的.二、缓冲区溢出实例实现原理1、堆栈的组成:...图2.1堆栈由数据存储区、EBP(

6、栈底指针)、EIP(指令寄存器,指向下一条指令的地址)DcbaHgfEbp原EIP….DcbaHgfLkjiPonm….正常时的堆栈情况内存低址0x616263640x61626364EBP的值原EIP的值内存高址溢出后的堆栈情况内存低址0x616263640x616263640x696a6b6c0x6d6e6f70内存高址2、漏洞利用程序详细分析:图2.2编写一个漏洞利用程序,给它赋超过本身长度的值,使其溢出,但是我们要找到这个漏洞,我们需用shellcode进行填充,填充一定数量的值,使我们能够清晰的找到漏洞(EIP),如果EIP指向的下一个地址不存在,

7、那么它就出错,警告你哪里的指令引用的地址内存不能为“read”,那么那个地址就是EIP所在的位子,由于每一个地址空间都是4个字节,所以EBP和EIP都占4个字节,所以在出错的地址前4个地址就是EBP的地址。为了利用漏洞,我们就必须利用EIP的这个空间,将这个地址用JMPESP来赋值,这样EIP—>JMPESP,这样程序执行到了EIP的地址空间时,就会跳转去执行JMPESP,这样就会执行另一个shellcode的代码,这样我们就利用了缓冲区的漏洞。图2.3...三、缓冲区溢出实例实现过程步骤1:编写一个漏洞分析代码<程序一>#include"stdio.h"#

8、include"string.h"#include"

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

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

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