缓冲区溢出攻击实验报告
缓冲区溢出攻击
缓冲区溢出攻击网络安全实验报告实验名称:缓冲区溢出攻击姓名:王嘉琳学号:090342228指导教师:付宇一、实验目的1.了解缓冲区溢出攻击的现象2.掌握使用缓冲区溢出攻击工具的方法二、实验环境系统环境:Windows网络环境:交换网络结构实验工具:ms06035漏洞利用工具、ms08025漏洞利用工具、ms06063补丁、ms08025补丁三、实验实际完成内容及结果分析利用ms06035漏洞进行攻击1.进入“ms06035漏洞利用工具”目录主机A单击工具栏中“ms06035工具”按钮,进入“ms06035漏洞利用工具”工作目录。
2.查看当前目录内容主机A用dir命令查看当前目录中的内容,如下图所示:上图中标注的“ms06035.exe”即为ms06035漏洞攻击工具。
3.查看“ms06035工具”的使用方法主机A执行“ms06035.exe”命令,提示ms06035漏洞利用工具的使用方法,如下图所示:4.使用“ms06035工具”进行攻击主机A执行“ms06035.exe 主机B的ip445”命令,发起对主机B的攻击。
5.主机B观察被攻击现象主机B被攻击后出现蓝屏死机的现象(实验结束,主机B用虚拟机“快照X”恢复实验环境)。
利用ms08025漏洞进行攻击以下步骤两主机互相攻击对方,操作相同,故以主机A为例说明实验步骤。
「注」将“C:\ExpNIS\NetAD-Lab\Tools\OverFlow\RemoteOverflow”目录下的“ms08025.exe”复制到D盘的根目录下,以便实验下一步进行。
1.telnet登录系统(1)主机A在命令行下使用telnet登录同组主机,登录账号为“student”,密码为“123456”,登录成功如下图。
(2)主机A依次输入“d:”|“dir”查看同组主机D盘根目录,“ms08025.exe”即为实验工具。
2.使用系统命令添加用户主机A使用“net user student1 /add”命令来试添加一个用户“student1”,执行该命令,出现“发生系统错误5,拒绝访问”的提示,如下图所示:请解释出现上述现象的原因:当前用户为普通用户,普通用户没有添加用户的权限。
缓冲区溢出攻击与防范实验报告
缓冲区溢出攻击与防范实验报告——计算机网络(2)班——V200748045黄香娥1·缓冲区溢出的概念:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2·缓冲区溢出的危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。
而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
3·缓冲区溢出原理:由一个小程序来看://test.c#include "stdio.h"#include "stdlib.h"#include "string.h"void overflow(void){char buf[10];strcpy(buf,"0123456789123456789");}//end overflowint main(void){overflow();return 0;}//end main按F11进入"Step into"调试模式,如下:按F11跟踪进入overflow,让程序停在6,现在再看一下几个主要参数:esp=0x0012ff30,eip发生了变化,其它未变。
缓冲区溢出攻击实验报告_林凯杰_30601340
缓冲区溢出攻击实验【实验要求】1)基本要求:编写一个能实现缓冲区溢出(整数溢出或堆栈溢出)的程序。
语言不限(c,c++,c#,java等均可),环境也不限(linux或windows等)。
并在调试状态下(如linux的gdb或其他集成开发环境的调试命令)查看寄存器和相应存储单元内容的变化情况。
分析并解释缓冲区溢出的原因。
提交:分析文档(要给出调试过程和运行过程中的一些必要的截图),源代码等。
2)提高要求:在上述溢出的情况下,改写ret地址,增加shellcode代码,实现本地或远程管理员权限的非授权访问。
例:一个简单的shellcode程序:/* linux下的一个程序*/#include <stdio.h>void main() {char *name[2];name[0]="/bin/sh";name[1]=NULL;execve(name[0],name,NULL);}也可用gdb对其反汇编(主要分析execve和exit函数调用的机器指令),获得相关的汇编代码,进一步处理为16进制机器代码,形如char shellcode[]="\xeb\xlf.......\bin\sh";然后利用strcpy等脆弱性函数植入shellcode.【实验原理】实验主要是利用strcpy等脆弱性函数在执行时没有检查缓冲区长度的特性,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。
1、局部变量与堆栈的关系在一个程序中,会声明各种变量。
静态全局变量是位于数据段并且在程序开始运行的时候被初始化,而局部变量则在堆栈中分配,只在该函数内部有效。
如果局部变量使用不当,会造成缓冲区溢出漏洞。
例如,以下程序将命令行的第1个参数拷贝到buffer局部变量中。
void main(int argc,char **argv){char buf[80];strcpy(buf,argv[1]);}在一次函数调用中,堆栈中将被依次压入:参数、返回地址。
实验4 缓冲区溢出攻击实验
深圳大学实验报告课程名称:计算机系统(2)实验项目名称:缓冲区溢出攻击实验学院:计算机与软件学院专业:计算机科学与技术指导教师:罗秋明报告人:实验时间:2016年5月8日实验报告提交时间:2016年5月22日教务处制一、实验目标:1.理解程序函数调用中参数传递机制;2.掌握缓冲区溢出攻击方法;3.进一步熟练掌握GDB调试工具和objdump反汇编工具。
二、实验环境:1.计算机(Intel CPU)2.Linux64位操作系统(CentOs)3.GDB调试工具4.objdump反汇编工具三、实验内容本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。
我们仅给黑客(同学)提供一个二进制可执行文件bufbomb和部分函数的C代码,不提供每个关卡的源代码。
程序运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过管卡!要求同学查看各关卡的要求,运用GDB调试工具和objdump反汇编工具,通过分析汇编代码和相应的栈帧结构,通过缓冲区溢出办法在执行了getbuf()函数返回时作攻击,使之返回到各关卡要求的指定函数中。
第一关只需要返回到指定函数,第二关不仅返回到指定函数还需要为该指定函数准备好参数,最后一关要求在返回到指定函数之前执行一段汇编代码完成全局变量的修改。
实验代码bufbomb和相关工具(sendstring/makecookie)的更详细内容请参考“实验四缓冲区溢出攻击实验.p ptx”。
本实验要求解决关卡1、2、3,给出实验思路,通过截图把实验过程和结果写在实验报告上。
四、实验步骤和结果步骤1 返回到smoke()1.1 解题思路首先弄清楚getbuf()的栈帧结构,知道存放字符数组buf地址的单元和存放getbuf()返回地址的单元之间相差多少个字节。
假设两者之间相差x个字节。
然后找到smoke()函数的入口地址。
该值为4个字节。
再构造exploit.txt,前x个字节随意填,然后再填入4个字节的smoke()地址,注意是小端方式存储。
缓冲区溢出攻击与防范实验报告
实验六报告如图2所示的Windows 2000系统(虚拟机环境下)的计算机。
显然这2台计算机处于同一个网段中,可以相互通讯,win10系统用作攻击机,下面将在此系统上运行Metasploit进行渗透测试,而Windows 2000系统都是本次任务中需要进行渗透入侵的靶机,保持安装后的默认状态,没有打额外的系统安全补丁。
图1 win10攻击机图2 Windows 2000 靶机2、扫描靶机在正式开始渗透之前,应该对靶机进行扫描探测工作,搞清楚渗透目标的系统类型、开放的端口服务、可能存在的安全漏洞等。
在win10攻击机上运行metasploit console,即可进入Metasploit环境。
现在可以利用MSF框架中集成的Nmap扫描器对渗透测试目标进行扫描,如图3所示,获取了靶机的开放服务和操作系统类型等信息。
图3 windows 2000扫描结果利用扫描器的脚步插件,还有可能直接探测出目标系统的安全漏洞,例如如图4所示,Nmap 利用smb-check-vulns插件扫描探测出了Windows 2000靶机存在MS08_067漏洞,命令执行如下:nmap -script= 。
namap扫描的结果里报告发现MS08-067:DISABLED。
这是在暗示我们或许能够对这台主机进行渗透攻击,然后我们在Metasloit里面找到此漏洞的攻击模块,并尝试攻击目标机器。
MS08-067是一个对操作系统版本依赖非常高的漏洞,所以在这里,我们只自动payload指定一下目标就可以确保触发正确的溢出代码。
图4漏洞扫描结果3利用MS08_067漏洞渗透入侵MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响的系统上收到特制的RPC 请求,则该漏洞可能允许远程执行代码。
在Microsoft Windows 2000Windows XP 和Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击,目前已经有利用该漏洞的蠕虫病毒。
实验2:缓冲区溢出
3.4.2 寻找jmp指令地址
前面说到,我们选择通过jmp esp来实现程 序跳转,也就是说,要在RET的位置放置 jmp esp指令的地址,那么,到哪里找jmp esp指令呢? 最好是能在系统中找到现成的,而不需要 我们重新再构造 事实上,在Windows系统的许多DLL中都 能找到jmp esp这样一条指令,一个通用的 地址是0x7ffa4512
4. 实验说明——3CTftpSvc
软件名称:3CTftpSvc 影响版本:Current version:2.0.1 漏洞描述:畸形的传输模式可以导致缓冲 区溢出,覆盖EIP,可能造成拒绝服务攻击和 远程代码执行。 漏洞调试:当传输模式为mode = "netascii" + "A" * 469时覆盖EIP
因此,在网上下载的CCProxy 6.2有可能 是已修补了该漏洞的程序
4. 实验说明——War-ftp
war-ftp漏洞提示:向服务器发送超过480 字节的用户名可以触发漏洞(即使用命令 USER longString\r\n),溢出之后,ESP中 的内容包含了longString中的部分内容
3.1 介绍CCProxy
CCProxy因其设 置简单和使用方便 等特点,成为国内 最受欢迎的代理服 务器软件。 CCProxy不但支 持常见的HTTP和 SOCKS代理,而且还 支持FTP和Telnet这 类不常用的协议及 其它协议。
3.2 漏洞说明
CCProxy在代理Telnet协议时,可以接受 Ping命令
Socket编程 连接目标主机(connect) 构造溢出字符串(即构造后接shellcode的 ping命令:ping shellcode\r\n) 向目标主机发送溢出字符串(send) 关闭连接
(完整word版)缓冲区溢出攻击实验报告
缓冲区溢出攻击实验报告班级:10网工三班学生姓名:谢昊天学号:1215134046实验目的和要求:1、掌握缓冲区溢出的原理;2、了解缓冲区溢出常见的攻击方法和攻击工具;实验内容与分析设计:1、利用RPC漏洞建立超级用户利用工具scanms.exe文件检测RPC漏洞,利用工具软件attack.exe对172.18.25.109进行攻击。
攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。
2、利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。
3、利用WebDav远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。
实验步骤与调试过程:1.RPC漏洞出。
首先调用RPC(Remote Procedure Call)。
当系统启动的时候,自动加载RPC服务。
可以在服务列表中看到系统的RPC服务。
利用RPC漏洞建立超级用户。
首先,把scanms.exe文件拷贝到C盘跟目录下,检查地址段172.18.25.109到172.18.25.11。
点击开始>运行>在运行中输入cmd>确定。
进入DOs模式、在C盘根目录下输入scanms.exe 172.18.25.109-172.18.25.110,回车。
检查漏洞。
2.检查缓冲区溢出漏洞。
利用工具软件attack.exe对172.18.25.109进行攻击。
在进入DOC 模式、在C盘根目录下输入acctack.exe 172.18.25.109,回车。
3,利用软件Snake IIS溢出工具可以让对方的IIS溢出。
进入IIS溢出工具软件的主界面.IP:172.18.25.109 PORT:80 监听端口为813单击IDQ溢出。
出现攻击成功地提示对话框。
4.利用工具软件nc.exe连接到该端口。
进入DOs模式,在C盘根目录下输入nc.exe -vv 172.18.25.109 813 回车。
网络安全实验报告 - 缓冲区溢出攻击
一实验名称利用跳转指令实现缓冲区溢出定位参数地址实现缓冲区溢出二实验目的1.熟练掌握缓冲区溢出原理2.利用jmp esp指令实现缓冲区溢出3.熟练掌握缓冲区溢出原理4.利用定位参数地址实现缓冲区溢出三实验步骤利用跳转指令实现缓冲区溢出1.编写前导码程序中提供了一个超长前导码,对程序进行调试来确定实际需要的前导码长度在图中可以看出,0x49484746四字节覆盖了ret返回地址2.查找jmp esp指令地址运行FindJmpesp工具,选取一个地址追加到shellcode尾(追加填加地址时注意数组高字节对应地址高位),所选jmp esp指令地址是0x77e424da跟踪调试程序,确定在memcpy执行返回时jmp esp指令是否被执行从图看出,在jmp esp指令执行完毕后,指令指针紧接着执行了3个空指令,而空指令是追加在shellcode尾部的3.生成实现弹出对话框的指令码MessageBoxA函数的绝对内存地址,该地址为0x77E10000+0x0003D8DE=0x77E4D8DE函数ExitProcess的绝对内存地址0x7C800000+0x00013039=0x7C813039利用反汇编功能获取代码字节,将代码字节以十六进制数据形式继续追加到shellcode尾。
重新编译执行。
定位参数实现缓冲区溢出1.进入工程2.生成shellcode功能体(1)首先设置OverFlowClient项目为启动项。
(2)使用Depends工具打开FindShellBase.exe文件定位上述内存地址kernel32.dll 0x7C800000LoadlibraryA 0x7C800000+0x00001E60=7C801E60SHELL32.DLL 0x7CA10000shellExecuteA 0x7CA10000+0x0008F6D4=0x7CA9F6D4(3)编译并生成OverFlowClient.exe,执行OverFlowClient.exe,确定系统是否新建了jlcss用户,并隶属Administrators组。
缓冲区溢出攻击与防范实验报告
缓冲区溢出攻击与防范实验报告——计算机网络(2)班——V200748045黄香娥1·缓冲区溢出的概念:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2·缓冲区溢出的危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。
而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
3·缓冲区溢出原理:由一个小程序来看://test.c#include "stdio.h"#include "stdlib.h"#include "string.h"void overflow(void){char buf[10];strcpy(buf,"0123456789123456789");}//end overflowint main(void){overflow();return 0;}//end main按F11进入"Step into"调试模式,如下:按F11跟踪进入overflow,让程序停在6,现在再看一下几个主要参数:esp=0x0012ff30,eip发生了变化,其它未变。
缓冲区溢出实验
缓冲区溢出实验实验环境:实验准备:因为缓冲区溢出攻击是一个比较老的攻击方法,因此在现在的操作系统中都加入了防护机制。
在实验开始之前,为了能成功的看到结果,我们需要把这些防护机制关掉。
工程如下:第一步,关掉随机地址机制。
地址随机是一个主要防护机制,在缓冲区溢出攻击过程中需要覆盖并改写程序的返回地址。
使返回地址指向我们的代码,如果开始地址随机的话,我们就不能准确的计算出我们的代码的位置。
所以,我们使用以下命令(在root权限下),关掉该防护机制。
#sysctl -w kernel.randomize_va_space=0第二步,在编译的时候,要关掉栈区保护,并且允许栈区可执行。
这样,我们利用缓冲区溢出注入的代码才可以在栈里面执行。
$ gcc -fno-stack-protector example.c$ gcc -z execstack -o test test.c实验过程:首先分析被攻击的程序#include <stdlib.h>#include <stdio.h>#include <string.h>int bof(char *str){char buffer[24];/* The following statement has a buffer overflow problem */strcpy(buffer, str);return 1;}int main(int argc, char **argv){char str[517];FILE *badfile;badfile = fopen("badfile", "r");fread(str, sizeof(char), 517, badfile);bof(str);printf("Returned Properly\n");return 1;}main()函数读入一个文件,并调用bof(),进行拷贝。
缓冲区溢出漏洞实验
缓冲区溢出漏洞实验缓冲区溢出漏洞实验⼀、了解缓冲区溢出及其原理1、缓冲区溢出概念缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本⾝的容量溢出的数据在合法数据上,理想的情况是程序检查数据长度并不允许输⼊超过缓冲区长度的字符,但是绝⼤多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患,操作系统所使⽤的缓冲区,⼜被称为"堆栈"。
在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2、缓冲区溢出攻击及其原理通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从⽽破坏程序的堆栈,使程序转⽽执⾏其它指令,以达到攻击的⽬的。
造成缓冲区溢出的原因是程序中没有仔细检查⽤户输⼊的参数。
这也是稍后做题的突破原理,缓冲区漏洞普遍并且易于实现,缓冲区溢出成为远程攻击的主要⼿段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的⼀切:植⼊并且执⾏攻击代码。
被植⼊的攻击代码以⼀定的权限运⾏有缓冲区溢出漏洞的程序,从⽽得到被攻击主机的控制权。
⼤多数的缓冲溢出攻击都是通过改变程序运⾏的流程到⼊侵者植⼊的恶意代码,其主要⽬的是为了获取超级⽤户的shell。
原理:将恶意指令存放在buffer中,这段指令可以得到进程的控制权,从⽽达到攻击的⽬的。
⼆、实验楼实现缓冲区溢出1、实验准备本实验需要32位环境下操作,输⼊命令下载必要的软件包。
sudo apt-get updatesudo apt-get install -y lib32z1 libc6-dev-i386 lib32readline6-devsudo apt-get install -y python3.6-gdbm gdb2、初始设置Ubuntu 和其他⼀些 Linux 系统中,使⽤地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得⼗分困难,⽽猜测内存地址是缓冲区溢出攻击的关键。
缓冲区溢出攻击与防范实验报告
实验六报告图1 win10攻击机图2 Windows 2000 靶机2、扫描靶机在正式开始渗透之前,应该对靶机进行扫描探测工作,搞清楚渗透目标的系统类型、开放的端口服务、可能存在的安全漏洞等。
在win10攻击机上运行metasploit console,即可进入Metasploit环境。
现在可以利用MSF框架中集成的Nmap扫描器对渗透测试目标进行扫描,如图3所示,获取了靶机的开放服务和操作系统类型等信息。
图3 windows 2000扫描结果利用扫描器的脚步插件,还有可能直接探测出目标系统的安全漏洞,例如如图4所示,Nmap利用smb-check-vulns插件扫描探测出了Windows 2000靶机存在MS08_067漏洞,命令执行如下:nmap -script=smb-check-vulns.nse 192.168.56.101。
namap扫描的结果里报告发现MS08-067:DISABLED。
这是在暗示我们或许能够对这台主机进行渗透攻击,然后我们在 Metasloit里面找到此漏洞的攻击模块,并尝试攻击目标机器。
MS08-067是一个对操作系统版本依赖非常高的漏洞,所以在这里,我们只自动payload指定一下目标就可以确保触发正确的溢出代码。
图4漏洞扫描结果3利用MS08_067漏洞渗透入侵MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。
在 Microsoft Windows 2000Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击,目前已经有利用该漏洞的蠕虫病毒。
防火墙最佳做法和标准的默认防火墙配置,有助于保护网络资源免受从企业外部发起的攻击,默认情况下能建立空连接。
缓冲溢出攻击实验报告
一、实验目的及要求1. 了解缓冲区溢出攻击的原理和类型。
2. 掌握缓冲区溢出攻击的实验方法和步骤。
3. 理解缓冲区溢出攻击的危害性。
4. 学习防范和避免缓冲区溢出攻击的方法。
二、实验环境1. 操作系统:Windows 102. 编程语言:C/C++3. 漏洞利用工具:Metasploit4. 实验环境搭建:使用虚拟机软件(如VMware)搭建实验环境,靶机为Windows 7 SP1,攻击机为Kali Linux。
三、实验内容1. 漏洞分析:分析实验环境中存在的缓冲区溢出漏洞。
2. 攻击实现:利用Metasploit工具对靶机进行攻击,实现远程代码执行。
3. 防御措施:学习防范和避免缓冲区溢出攻击的方法。
四、实验步骤1. 漏洞分析- 使用Ghidra工具对实验环境中的漏洞程序进行反汇编,分析程序中的缓冲区溢出漏洞。
- 发现漏洞程序存在缓冲区溢出漏洞,攻击者可以通过输入超长字符串来覆盖返回地址,从而控制程序的执行流程。
2. 攻击实现- 使用Metasploit工具中的`exploit/multi/handler`模块,设置攻击目标为靶机的IP地址和端口。
- 使用`set payload`命令设置攻击载荷,选择`windows/x64/meterpreter/reverse_tcp`,该载荷可以在攻击成功后与攻击机建立反向连接。
- 使用`set LHOST`命令设置攻击机的IP地址,使用`set LPORT`命令设置端口号。
- 使用`set target`命令设置攻击目标,选择漏洞程序的模块和参数。
- 使用`exploit`命令启动攻击,等待攻击成功。
3. 防御措施- 代码审计:对程序进行代码审计,及时发现并修复缓冲区溢出漏洞。
- 输入验证:对用户输入进行严格的验证,限制输入长度,防止输入超长字符串。
- 边界检查:在代码中添加边界检查,防止缓冲区溢出。
- 安全编程:遵循安全编程规范,使用安全的编程语言和库,避免使用存在漏洞的函数。
缓冲区溢出实验报告
缓冲区溢出报告院系:计算机与通信工程学院班级:信息安全10-02班1.实验目的掌握缓冲区溢出的原理掌握常用的缓冲区溢出方法理解缓冲区溢出的危害性掌握防范和避免缓冲区溢出攻击的方法2.实验工具溢出对象:CCProxy 7.2(1)(2)调试工具:使用Vmware虚拟机,安装CCPROXY7.2进行实验调试。
3.实验步骤了解CCProxy 7.2代理服务器为大家解决了很多问题,比如阻挡黑客攻击和局域网共享上网等。
•国内非常受欢迎的一款代理服务器软件•设置简单,使用方便•不仅支持常见的HTTP和SOCKS代理,而且支持FTP/Telnet等这类不常用的协议及其它协议关于CCProxy6.2缓冲区溢出漏洞说明CCProxy在代理Telnet协议时,可以接受Ping命令Ping命令格式:ping hostname\r\n当hostname的长度大于或者等于1010字节时,CCProxy 6.2会发生缓冲区溢出,导致程序崩溃CCProxy 6.2缓冲区溢出漏洞演示在目标主机运行CCProxy,使用默认设置运行CCProxy的机器IP是192.168.6.132使用telnet命令连接CCProxy:telnet 192.168. 6.132 23返回信息:(如图)输入ping命令,后接畸形数据:在ping命令后接10个字符A(ping AAAAAAAAAA),观察返回信息将字符A的数量变为100个、1000个、2000个,观察返回信息(注:由于本人安装的是7.2版本,其漏洞已修复,故智能识别252个字符,其后被截断,所以当出现的畸形字符长度超过252时,就不再被识别,所以会有“host not found”)原理:如果终端提示“Host not found”,说明CCProxy正确地处理了这个畸形数据,仍工作正常如果终端提示“失去了跟主机的连接”,表明CCProxy已经崩溃CCProxy 6.2缓冲区溢出漏洞利用如何利用这个漏洞,来实现攻击目的,做一些特别的事情。
缓冲区溢出攻击与防范实验
实验十二缓冲区溢出攻击与防范实验1.实验目的通过实验掌握缓冲区溢出的原理;通过使用缓冲区溢出攻击软件模拟入侵远程主机;理解缓冲区溢出危险性;理解防范和避免缓冲区溢出攻击的措施。
2.预备知识2.1缓冲区溢出攻击简介缓冲区溢出攻击之所以成为一种常见的攻击手段,其原因在于缓冲区溢出漏洞太普通了,并且易于实现。
而且,缓冲区溢出所以成为远程攻击的主要手段,其原因在于缓冲区溢出漏洞给予了攻击者所想要的一切:植入并且执行攻击代码。
被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。
下面简单介绍缓冲区溢出的基本原理和预防办法。
(1)缓冲区概念缓冲区是内存中存放数据的地方。
在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。
而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区,然后再向一个有限空间的缓冲区中植入超长的字符串,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。
缓冲区是程序运行的时候机器内存中的一个连续块,它保存了给定类型的数据,随着动态分配变量会出现问题。
大多时为了不占用太多的内存,一个有动态分配变量的程序在程序运行时才决定给它们分配多少内存。
如果程序在动态分配缓冲区放入超长的数据,它就会溢出了。
一个缓冲区溢出程序使用这个溢出的数据将汇编语言代码放到机器的内存里,通常是产生root权限的地方。
仅仅单个的缓冲区溢出并不是问题的根本所在。
但如果溢出送到能够以root权限运行命令的区域,一旦运行这些命令,那可就等于把机器拱手相让了。
造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。
缓冲区是一块用于存放数据的临时内存空间,它的长度事先已经被程序或操作系统定义好。
缓冲区类似于一个杯子,写入的数据类似于倒入的水。
linux实验报告-Linux下的缓冲区溢出实践
课程实验(设计)报告课程名称:Linux架构分析与安全设计实验内容:Linux下的缓冲区溢出实践目录1. 实验目的 (3)2. 实验环境 (3)3. 实验原理 (3)4. 实验要求 (7)5. 实验内容和步骤 (7)5.1 实验内容 (7)5.2实验步骤 (8)6. 实验思考与改进 (12)1.实验目的理解Linux系统下缓冲区溢出机制。
2.实验环境(1)操作系统:Ubuntu 20.04(2)L inux Kernel:5.4.0-53-generic(2)软件工具:gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.03. 实验原理#include<stdio.h>int calc(int a,int b,int* sum) {*sum = a+b;return0;}int main(int argc,char*argv[]) {int a = 1;int b = 2;int sum = 0;printf("before calc : a = %d, b = %d, sum = %d\n",a,b,sum);calc(a,b, &sum);printf("after calc : a = %d, b = %d, sum = %d\n",a,b,sum);return0;}参考上述代码,calc()函数有三个参数,第一个,第二个是参与计算的数,第三个是保存结果的变量的地址。
编译运行,结果如下图所示接下来我们使用gdb调试程序先用b命令在代码16行calc(a, b, sum)下断点,使用r运行,等程序在16行处停下来,查看a,b,sum的地址和rbp,rsp的值,如下图所示。
如下图所示,进入calc()函数后,因为函数传递参数是传值,会新申请内存空间保存变量,所以可以看到a,b,sum的地址都改变了但是从下图我们可以看出来,形参额值是不变的。
实验4缓冲区溢出攻击实验
深圳大学实验报告课程名称:计算机系统(2)实验项目名称:缓冲区溢出攻击实验学院:计算机与软件学院专业:指导教师:罗秋明报告人:学号:班级:实验时间:2017年5月12日实验报告提交时间:2017年5月31日教务处制一、实验目标:1.理解程序函数调用中参数传递机制;2.掌握缓冲区溢出攻击方法;3.进一步熟练掌握GDB调试工具和objdump反汇编工具。
二、实验环境:1.计算机(Intel CPU)2.Linux32位操作系统(Ubuntu 16.04)3.GDB调试工具4.objdump反汇编工具三、实验内容本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。
我们仅给黑客(同学)提供一个二进制可执行文件bufbomb和部分函数的C代码,不提供每个关卡的源代码。
程序运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过管卡!要求同学查看各关卡的要求,运用GDB调试工具和objdump反汇编工具,通过分析汇编代码和相应的栈帧结构,通过缓冲区溢出办法在执行了getbuf()函数返回时作攻击,使之返回到各关卡要求的指定函数中。
第一关只需要返回到指定函数,第二关不仅返回到指定函数还需要为该指定函数准备好参数,最后一关要求在返回到指定函数之前执行一段汇编代码完成全局变量的修改。
实验代码bufbomb和相关工具(sendstring/makecookie)的更详细内容请参考“实验四缓冲区溢出攻击实验.pptx”。
本实验要求解决关卡1、2、3,给出实验思路,通过截图把实验过程和结果写在实验报告上。
四、实验步骤和结果首先是makecookie:步骤1 返回到smoke()1.1解题思路步骤1是要修改getbuf()的返回地址,在执行完getbuf()后不是返回到原来的调用者test(),而是跳到一个叫做smoke()的函数里。
只需构造一段字符串让Gets()全部拷贝到buf数组了,从而造成缓冲区溢出。
基于缓冲区溢出的攻击实验报告
一、实验名称:基于缓冲区溢出的攻击二、实验目的:1.学习并掌握缓冲区溢出的基本原理2.学习缓冲区溢出攻击利用的技术三、概念与原理1.缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2.通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。
例如下面程序:void function(char *str) {char buffer[16];strcpy(buffer,str);}上面的strcpy()将直接吧str中的内容copy到buffer中。
这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。
存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。
当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”,而不能达到攻击的目的。
最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。
如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。
四、攻击方法利用c语言中的getchar()等脆弱性函数在执行时没有检查缓冲区长度的特性,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。
实验七-缓冲区溢出攻击实验
实验七缓冲区溢出攻击实验
一、实验目的
1、理解缓冲区溢出攻击的原理;
2、获取目标主机的最高权限,利用远程桌面登录。
二、实验环境
1、实验环境:Windows 2000/2003的目标主机,通过虚拟机加载;
2、软件工具:metasploit frmamework。
三、实验步骤
1.攻击目标
Windows 2000主机
2.攻击开始
步骤1:使用nmap对目标进行端口扫描
步骤2:目标开启135端口,可利用MS03-026漏洞进行入侵,用到的工具是metasploit frmamework。
安装完毕后选择console模式
(1)查询MS03-026漏洞所对应的溢出模块
(2)进入此模块
(3)设置有效载荷为执行特定命令,配置相关参数
(4)执行攻击命令,成功进入目标系统
(5)添加系统账号并把它加入系统管理员组中
四、实验小结:
缓冲区溢出,是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至
系统的控制权。
缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。
一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell。
通过该实验我了解到通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。
造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。
溢出的实验报告
一、实验目的1. 了解溢出的概念和产生原因;2. 掌握溢出攻击的原理和常见类型;3. 熟悉溢出漏洞的检测和防护方法。
二、实验环境1. 操作系统:Windows 10;2. 编程语言:C/C++;3. 编译器:MinGW;4. 虚拟机:VMware Workstation。
三、实验原理溢出(Buffer Overflow)是指当向缓冲区写入数据时,超出了缓冲区的实际容量,导致数据覆盖到相邻内存区域的现象。
当溢出的数据覆盖到关键数据结构或返回地址时,攻击者可以利用这一漏洞执行任意代码,从而实现攻击。
四、实验步骤1. 编写溢出程序```c#include <stdio.h>#include <stdlib.h>void vulnerable_function(char str) {char buffer[10];strcpy(buffer, str);printf("You said: %s\n", buffer);}int main() {char input[100];printf("Enter your name: ");scanf("%99s", input);vulnerable_function(input);return 0;}```2. 生成可执行文件在MinGW环境下,使用gcc编译器编译程序:```bashgcc -o overflow overflow.c```3. 运行溢出程序运行编译好的程序,输入超过缓冲区大小的字符串:```bash./overflow```4. 分析溢出过程当输入超过缓冲区大小的字符串时,溢出的数据会覆盖到相邻内存区域,包括返回地址。
攻击者可以通过构造特定的字符串,修改返回地址,使其指向恶意代码的地址,从而实现攻击。
5. 编写漏洞检测代码```c#include <stdio.h>#include <stdlib.h>void vulnerable_function(char str) {char buffer[10];strcpy(buffer, str);printf("You said: %s\n", buffer);}int main() {char input[100];printf("Enter your name: ");scanf("%99s", input);vulnerable_function(input);printf("Return address: %p\n", &input);return 0;}```运行漏洞检测代码,观察返回地址是否被覆盖:```bash./overflow```6. 防护溢出漏洞1) 使用安全的字符串处理函数,如strncpy、strncat等,限制写入数据的长度;2) 使用栈保护技术,如堆栈标记、堆栈守卫等,防止溢出数据覆盖返回地址;3) 使用地址空间布局随机化(ASLR)技术,增加攻击难度;4) 使用编译器提供的栈保护选项,如gcc的-fstack-protector选项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
缓冲区溢出攻击实验报告
班级:10网工三班学生姓名:谢昊天学号:46
实验目的和要求:
1、掌握缓冲区溢出的原理;
2、了解缓冲区溢出常见的攻击方法和攻击工具;
实验内容与分析设计:
1、利用RPC漏洞建立超级用户利用工具文件检测RPC漏洞,利用工具软件对进行攻击。
攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。
2、利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。
3、利用WebDav远程溢出使用工具软件和远程溢出。
实验步骤与调试过程:
1.RPC漏洞出。
首先调用RPC(Remote Procedure Call)。
当系统启动的时候,自动加载RPC服务。
可以在服务列表中看到系统的RPC服务。
利用RPC漏洞建立超级用户。
首先,把文件拷贝到C盘跟目录下,检查地址段到。
点击开始>运行>在运行中输入cmd>确定。
进入DOs模式、在C盘根目录下输入 -,回车。
检查漏洞。
2.检查缓冲区溢出漏洞。
利用工具软件对进行攻击。
在进入DOC模式、在C盘根目录下输入 ,回车。
3,利用软件Snake IIS溢出工具可以让对方的IIS溢出。
进入IIS溢出工具软件的主界面. PORT:80 监听端口为813
单击IDQ溢出。
出现攻击成功地提示对话框。
4.利用工具软件连接到该端口。
进入DOs模式,在C盘根目录下输入 -vv 813 回车。
5.监听本地端口(1)先利用命令监听本地的813端口。
进入DOs模式,在C盘根目录下输入nc -l -p 813回车。
(2)这个窗口就这样一直保留,启动工具软件snake,本地的IP 地址是,要攻击的计算机的IP地址是,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813.点击按钮“IDQ溢出”。
(3)查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。
将对方计算机的C盘根目录列出来,进入DOC模式,在C盘根目录下输入nc -l -p 813回车。
6.利用WebDav远程溢出使用工具软件和远程溢出。
(1)在DOS命令行下执行,进入DOC 模式,在C盘根目录下输入回车。
(2)程序入侵对方的计算机进入DOC模式,在C盘根目录下输入nc -vv 7788 回车。
实验结果:
1.成功加载RPC服务。
可以在服务列表中看到系统的RPC服务,见结果图。
2.成功利用工具软件对进行攻击。
3.成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑
执行的命令和在对方计算机上开辟端口。
4.利用软件工具攻击结果将在对方计算机上建立一个具有管理员权限地用户,并终止对方地rpc服务。
5.先利用命令监听
6.利用工具软件对进行攻击。
7.利用WebDav远程溢出使用工具软件和远程溢出。
8.具体结果见上传实验报告,实验结果图。
疑难小结:
通过本次试验,我对缓冲区溢出攻击有了进一步的了解,通过动手实现其设置缓冲区溢出攻击,我掌握了缓冲区溢出攻击的工作原理、入侵过程及危害。
成功加载RPC服务。
成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑执行的命令和在对方计算机上开辟端口。
利用软件工具攻击结果将在对方计算机上建立一个具有管理员权限地用户,并终止对方地rpc服务。
通过本次试验使我更加深刻的理解了缓冲区溢出攻击的特点。
同时,在实验过程中,回顾书本上的理论知识,巩固了我的知识。
主要算法和程序清单:
1.把文件拷贝到C盘跟目录下,检查地址段到.点击2.开始>运行>在运行中输入cmd>确定。
进入DOs模式、在C盘根目录下输入 -,回车。
检查漏洞。
3.利用工具软件对进行攻击。
4.在进入DOC模式、在C盘根目录下输入 ,回车。
5.利用工具软件连接到该端口,进入DOs模式,在C盘根目录下输入 -vv 813 回车。
6.void function(char * szPara1)
{
char buff[16];
strcpy(buffer, szPara1);
}
7.程序中利用strcpy函数将szPara1中的内容拷贝到buff中,只要szPara1的长度大于16,就会造成缓冲区溢出。
存在strcpy函数这样问题的C语言函数还有:strcat()、gets()、scanf()等。
8.利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。
(1)利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口工具软件的主界面(2)利用IIS溢出进行攻击
9.监听本地端口
10.查看nc命令的DOS框
11.利用WebDav远程溢出使用工具软件和远程溢出。
实验结果图:
1.应用程序呼叫网络上的计算机。
当系统启动的时候,自动加载RPC服务。
可以在服务列表中看到系统的RPC服务,如图所示:
2利用RPC漏洞建立超级用户
1,首先,把文件拷贝到C盘跟目录下,检查地址段到
3,检查缓冲区溢出漏洞
1.利用工具软件对进行攻击。
如图所示:
4,利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。
1.利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上
开辟端口工具软件的主界面如图所示
2,利用IIS溢出进行攻击
该软件适用于各种类型的操作系统,比如对进行攻击,的操作系统的Windows 2000,没有安装补丁程序,攻击完毕后,开辟一个813端口,并在对方计算机上执行命令“dir c:\”,。
设置如图所示
单击IDQ溢出。
出现攻击成功地提示对话框如图所示。
这个时候,813端口已经开放,利用工具软件连接到该端口,将会自动执行改才发送的DOS命令“dir c:\”,使用的语法是: -vv 813,其中-vv是程序的参数,813是目标端口。
可以看到命令的执行结果,如图所示。
监听本地端口
先利用命令监听本地的813端口。
使用的基本语法是“nc -l -p 813”,执行的过程如图所示。
这个窗口就这样一直保留,启动工具软件snake,本地的IP地址是,要攻击的计算机的IP地址是,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813,如图所示。
点击按钮“IDQ溢出”,程序显示对话框如图所示。
查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。
将对方计算机的C盘根目录列出来,如图所示
3、利用WebDav远程溢出使用工具软件和远程溢出。
使用工具软件有和。
首先在DOS命令行下执行,如图所示。
在命令后面直接跟对方的IP地址就可以了,现在要攻击的计算机是,执行情况如图所示。
程序入侵对方的计算机,过程如图所示。