缓冲区溢出攻击实验报告

合集下载

缓冲区溢出攻击实验

缓冲区溢出攻击实验

HUNAN UNIVERSITY课程实验报告题目: Buflab-handout学生姓名学生学号专业班级计科1403(一)实验环境联想ThinkPadE540 VM虚拟机ubuntu32位操作系统(二)实验准备1.使用tar xvf命令解压文件后,会有3个可执行的二进制文件bufbomb,hex2raw,makecookie。

bufbomb运行时会进入getbuf函数,其中通过调用Gets函数读取字符串。

要求在已知缓冲区大小的情况下对输入的字符串进行定制完成特定溢出操作。

从给的PDF文件中我们得知getbuf函数为:/ /Buffer size for getbuf#define NORMAL_BUFFER_SIZE 32int getbuf(){char buf[NORMAL_BUFFER_SIZE];Gets(buf);return 1;}这个函数的漏洞在于宏定义的缓冲区的大小为32,若输入的字符串长于31(字符串末尾结束符)则会导致数据的覆盖,从而导致一系列损失;在此实验中,我们正是利用这个漏洞来完成实验。

2. hex2raw可执行文件就是将给定的16进制的数转成二进制字节数据。

Makecookie是产生一个userid。

输入的相应的用户名产生相应的cookie值。

**我产生的cookie值为0x5eb52e1c,如下图所示:Level0:实验要求:从英文的PDF文件中的“Your task is to get BUFBOMB to execute the code for smoke when getbuf executes its return statement,rather than returning to test. Note that your exploit string may also corrupt parts of the stack not directlyrelated to this stage, but this will not cause a problem, since smoke causes the program to exit directly.”这句话看出实验让我们在test运行完后,不直接退出,而是跳到smoke函数处执行然后退出,这点很重要!(本人之前一直没有成功就是错在这儿)Test源码:void test(){int val;// Put canary on stack to detect possible corruptionvolatile int local = uniqueval();val = getbuf();// Check for corrupted stackif (local != uniqueval()) {printf("Sabotaged!: the stack has been corrupted\n");}else if (val == cookie) {printf("Boom!: getbuf returned 0x%x\n", val);validate(3);} else {printf("Dud: getbuf returned 0x%x\n", val);}}smoke源码:void smoke(){printf("Smoke!: You called smoke()\n");validate(0);exit(0);}对bufbomb函数进行反汇编并获取getbuf函数的反汇编代码:从上面的汇编代码中我们可以得知,lea指令把buf的指针地址(-0x28(%ebp))传给了Gets()。

网络攻击与防范实验报告-缓冲区溢出

网络攻击与防范实验报告-缓冲区溢出

网络攻击与防范实验报告姓名:____王小北___ 学号:___ 201411111111111111 _ 所在班级:实验名称:缓冲区溢出实验日期:2014年11月7日指导老师:实验评分:验收评语:实验目的:1.掌握缓冲区溢出的原理2.掌握常用的缓冲区溢出方法3.理解缓冲区溢出的危害性4.掌握防范和避免缓冲区溢出攻击的方法实验工具:溢出对象:war-ftp 1.65 ( 自己分析)调试工具:Debugging Tools for Windows 中(网上有下载)实验环境:虚拟机vmware workstation 10 Windows XP sp1高级语言编程:Socket编程VS2010实验步骤:原理:war-ftp 1.65版本的一个漏洞,即向服务器发送超过480字节的用户名可以触发漏洞(即使用命令USER longString\r\n),溢出之后ESP内容包含了longString中的部分内容。

过程:攻击者向war-ftp发送多余480字节的用户名,触发war-ftpd的漏洞,产生缓冲区溢出,此时war-ftpd将出现错误。

接下来通过PatterntTool工具构造的一串不重复字符串(1000个不同字符串,存入test.txt中),通过其时eip的内容,利用patternoffset.pl工具来确定RET的位置。

在网上寻找一段具有攻击效果的Shellcode,作为所发送的war-ftpd用户名。

其最主要是通过上边所确定的RET的位置,将“JMP ESP”指令的地址(0x7ffa4512)传递到RET 位置,最终目的是将指令指针转移到esp的位置。

同时我们可以通过确定esp的位置,从而在构造字符串时直接将shellcode代码加在在用户名上,使其能直接被放入esp所指的位置,即达到将其放入esp指向的缓冲区的目的。

通过发送构造的用户名,导致war-ftpd发生缓冲区溢出。

Shellcode的功能是建立一个新用户hack,可以用过net user命令来查看用户,最后发现攻击成功。

缓冲区溢出攻击

缓冲区溢出攻击

缓冲区溢出攻击网络安全实验报告实验名称:缓冲区溢出攻击姓名:王嘉琳学号: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

缓冲区溢出攻击实验报告_林凯杰_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]);}在一次函数调用中,堆栈中将被依次压入:参数、返回地址。

缓冲区溢出

缓冲区溢出

"\xb0\x0b" /* Line 10: movb $0x0b,%al */ "\xcd\x80" /* Line 11: int $0x80 */;int main(int argc, char **argv){char buf[sizeof(code)];strcpy(buf, code);((void(*)( ))buf)( ); } 这段 shellcode 的一些地方值得注意。首先,第三行将“//sh”而不是“/sh”推 入栈,这是因为我们在这里需要一个 32 位的数字而“/sh”只有 24 位。幸运的 是,“//”和 “/”等价,所以我们使用“//”对程序也没什么影响,而且起到补 位作用。第二,在调用 execve()之前,我们需要分别存储 name[0](串地址), name(列地址)和 NULL 至%ebx, %ecx,和%edx 寄存器。第 5 将 name[0]存 储%ebx;第 8 行将 name 存储到%ecx; 第 9 行将%edx 设为 0;还有其它方法可 以设%edx 为 0(如 xorl %edx, %edx)。这里用的(cdql)指令只是较为简短。第 三,当我们将%al 设为 11 时调用了 system callexecve(),并执行了“int $0x80”。
2.4 任务 1:攻击漏洞
我们提供给你一段部分完成的攻击代码“exploit.c”,这段代码的目的是为 “badfile”创建内容。代码中,shell code 已经给出,你需要完成其余部分。 /* exploit.c */ /* A program that creates a file containing code for launching shell*/ #include <stdlib.h> #include <stdio.h> #include <string.h>

实验4 缓冲区溢出攻击实验

实验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()地址,注意是小端方式存储。

0day缓冲区溢出实验报告

0day缓冲区溢出实验报告

网络安全缓冲区溢出实践班级:信安一班学号:*************姓名:***1 栈溢出1.1 修改邻接值首先写一个密码验证程序,正确密码为1234567在ollydbg中进行调试在验证密码时输入8888888提示错误。

堆栈情况:可以看出,输入的password储存在0012FB7C处authenticated变量存储在0012FF7C处。

由于8888888>1234567,所以值为1。

如果输入溢出,情况是这样的:输入8888888wsk,发现sk溢出到了authenticated变量处而我们的目标是使authenticated被覆盖为0,因此,输入8个字符,字符串最后的’\0\即null会覆盖authenticated使它成为0。

不过并不是所有的8个字符都可以。

如果输入的字符串小于1234567,那么authenticated是-1的补码即FFFFFFFF,这时只修改最后的一位还是不能使authenticated成为00000000,如这时authenticated值为===================================================================== 1.2 修改函数返回地址改为从文件中读取密码超出buffer范围的字符会依次淹没authenticated、EBP和返回地址。

观察反汇编:此处00401005即为验证函数,取出EAX中的返回值与0比较,如果相等则跳入00401125。

所以将password文件修改如下:可以覆盖返回地址,使程序跳入验证正确的分支2 代码植入通过栈溢出让程序执行输入数据中植入的代码在输入数据里包含自己想要执行的代码,然后通过返回地址让程序跳转到系统栈里执行。

向password.txt文件里植入二进制的机器码。

调用windows的API函数将buffer长度扩展为44,先将password文件修改为11个4321来进行实验,验证通过后堆栈情况如图:buffer起始还是0012FB7C,authenticated也还是0012FF7C,后面依次为EBP和返回地址。

(完整word版)缓冲区溢出攻击实验报告

(完整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发生了变化,其它未变。

缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告

网络攻防对抗实验报告实验名称:缓冲区溢出攻击(实验六)指导教师:专业班级:姓名:学号: _____电子邮件: ___ 实验地点: _ 实验日期:实验成绩:____________________一、实验目的1. 了解缓冲区溢出攻击的原理和危害;2.掌握缓冲区溢出攻击的方法和对策。

二、实验原理1.缓冲区概念缓冲区是内存中存放数据的地方。

在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。

而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区,然后再向一个有限空间的缓冲区中植入超长的字符串,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root 特级权限。

缓冲区是程序运行的时候机器内存中的一个连续块,它保存了给定类型的数据,随着动态分配变量会出现问题。

大多时为了不占用太多的内存,一个有动态分配变量的程序在程序运行时才决定给它们分配多少内存。

如果程序在动态分配缓冲区放入超长的数据,它就会溢出了。

一个缓冲区溢出程序使用这个溢出的数据将汇编语言代码放到机器的内存里,通常是产生root权限的地方。

仅仅单个的缓冲区溢出并不是问题的根本所在。

但如果溢出送到能够以root权限运行命令的区域,一旦运行这些命令,那可就等于把机器拱手相让了。

造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

缓冲区是一块用于存放数据的临时内存空间,它的长度事先已经被程序或操作系统定义好。

缓冲区类似于一个杯子,写入的数据类似于倒入的水。

缓冲区溢出就是将长度超过缓冲区大小的数据写入程序的缓冲区,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令。

发生溢出时,如果用一个实际存在的指令地址来覆盖被调用函数的返回地址,则系统就会转而执行这个指令,这一点就是缓冲区溢出被用来进行攻击的最关键之处。

缓冲区溢出攻击与防范实验报告

缓冲区溢出攻击与防范实验报告

实验六报告图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缓冲区溢出漏洞利用如何利用这个漏洞,来实现攻击目的,做一些特别的事情。

linux实验报告-Linux下的缓冲区溢出实践

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的地址都改变了但是从下图我们可以看出来,形参额值是不变的。

基于缓冲区溢出的攻击实验报告

基于缓冲区溢出的攻击实验报告

一、实验名称:基于缓冲区溢出的攻击二、实验目的: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. 掌握溢出攻击的原理和常见类型;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选项。

网络安全实验报告 (4)

网络安全实验报告 (4)
图7 在目标主机上添加用户(2)
四、实验结果与数据处理
ms05039攻击一直无法完成,重新启动虚拟机后就可以了。
五、分析与讨论
要提高网络安全意识。
六、教师评语
签名:
日期:
成绩三、实验内容与Fra bibliotek骤实验任务:利用ms05-039溢出漏洞攻击
MS05-039漏洞是Microsoft Windows即插即用功能远程缓冲区溢出漏洞。Microsoft Windows即插即用(PnP)功能允许操作系统在安装新硬件时能够检测到这些设备。Microsoft Windows即插即用功能中存在缓冲区溢出漏洞,造成该漏洞的原因是Plug and Play服务中有未经检查的缓冲区。成功利用这个漏洞的攻击者可以完全控制受影响的系统。这是一个严重的安全漏洞,成功的攻击者可以完全控制被攻击的计算机。这个漏洞既可以用来远程溢出(只适用于目标系统是2000和xp sp1),也可以用来本地提升权限(2000以上版本都可以)。而且溢出成功后会得到一个SYSTEM权限的shell。
《计算机网络安全》实验报告
实验序号:4 实验项目名称:缓冲区溢出攻击与防范实验
学号
姓名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
通过实验掌握缓冲区溢出的原理;通过使用缓冲区溢出攻击软件模拟入侵远程主机;理解缓冲区溢出危险性;理解防范和避免缓冲区溢出攻击的措施。
二、实验设备(环境)及要求
Windows 2000 server,虚拟机
本实验是在主机上利用ms05-039溢出工具对虚拟机上的ms05039漏洞进行溢出攻击,入侵成功后获得系统的控制权。
1)入侵准备工作
图2 运行nc 进行监听
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

缓冲区溢出攻击实验报告
班级: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 回车。

5.监听本地端口(1)先利用nc.exe命令监听本地的813端口。

进入DOs模式,在C盘根目录下输入nc -l -p 813回车。

(2)这个窗口就这样一直保留,启动工具软件snake,本地的IP地址是172.18.25.110,要攻击的计算机的IP地址是172.18.25.109,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813.点击按钮“IDQ溢出”。

(3)查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。

将对方计算机的C盘根目录列出来,进入DOC模式,在C盘根目录下输入nc -l -p 813回车。

6.利用WebDav远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。

(1)在DOS命令行下执行webdavx3.exe,进入DOC模式,在C盘根目录下输入webdavx3.exe 172.18.25.109回车。

(2)nc.exe程序入侵对方的计算机进入DOC模式,在C盘根目录下输入nc -vv 172.18.25.109 7788 回车。

实验结果:
1.成功加载RPC服务。

可以在服务列表中看到系统的RPC服务,见结果图。

2.成功利用工具软件attack.exe对172.18.25.109进行攻击。

3.成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑执行的命令和在对方计算机上开辟端口。

4.利用软件工具attack.exe攻击结果将在对方计算机上建立一个具有管理员权限地用户,并终止对方地rpc服务。

5.先利用nc.exe命令监听
6.利用工具软件attack.exe对172.18.25.109进行攻击。

7.利用WebDav远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。

8.具体结果见上传实验报告,实验结果图。

疑难小结:
通过本次试验,我对缓冲区溢出攻击有了进一步的了解,通过动手实现其设置缓冲区溢出攻击,我掌握了缓冲区溢出攻击的工作原理、入侵过程及危害。

成功加载RPC服务。

成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑执行的命令和在对方计算机上开辟端口。

利用软件工具attack.exe攻击结果将在对方计算机上建立一个具有管理员权限地用户,并终止对方地rpc服务。

通过本次试验使我更加深刻的理解了缓冲区溢出攻击的特点。

同时,在实验过程中,回顾书本上的理论知识,巩固了我的知识。

主要算法和程序清单:
1.把scanms.exe文件拷贝到C盘跟目录下,检查地址段172.18.25.109到172.18.25.11.点击2.开始>运行>在运行中输入cmd>确定。

进入DOs模式、在C盘根目录下输入scanms.exe 172.18.25.109-172.18.25.110,回车。

检查漏洞。

3.利用工具软件attack.exe对172.18.25.109进行攻击。

4.在进入DOC模式、在C盘根目录下输入acctack.exe 172.18.25.109,回车。

5.利用工具软件nc.exe连接到该端口,进入DOs模式,在C盘根目录下输入nc.exe -vv 172.18.25.109 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远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。

实验结果图:
1.应用程序呼叫网络上的计算机。

当系统启动的时候,自动加载RPC服务。

可以在服务列表中看到系统的RPC服务,如图所示:
2利用RPC漏洞建立超级用户
1,首先,把scanms.exe文件拷贝到C盘跟目录下,检查地址段172.18.25.109到
172.18.25.11
3,检查缓冲区溢出漏洞
1.利用工具软件attack.exe对17
2.18.25.109进行攻击。

如图所示:
4,利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。

1.利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开
辟端口工具软件的主界面如图所示
2,利用IIS溢出进行攻击
该软件适用于各种类型的操作系统,比如对172.18.25.109进行攻击,172.18.25.109的操作系统的Windows 2000,没有安装补丁程序,攻击完毕后,开辟一个813端口,并在对方计算机上执行命令“dir c:\”,。

设置如图所示
单击IDQ溢出。

出现攻击成功地提示对话框如图所示。

这个时候,813端口已经开放,利用工具软件nc.exe连接到该端口,将会自动执行改才发送的DOS 命令“dir c:\”,使用的语法是:nc.exe -vv 172.18.25.109 813,其中-vv是程序的参数,813是目标端口。

可以看到命令的执行结果,如图所示。

监听本地端口
先利用nc.exe命令监听本地的813端口。

使用的基本语法是“nc -l -p 813”,执行的过程如图所示。

这个窗口就这样一直保留,启动工具软件snake,本地的IP地址是172.18.25.110,要攻击的计算机的IP地址是172.18.25.109,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813,如图所示。

点击按钮“IDQ溢出”,程序显示对话框如图所示。

查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。

将对方计算机的C盘根目录列出来,如图所示
3、利用WebDav远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。

使用工具软件有nc.exe和webdavx3.exe。

首先在DOS命令行下执行webdavx3.exe,如图所示。

在命令后面直接跟对方的IP地址就可以了,现在要攻击的计算机是172.18.25.109,执行情况如图所示。

nc.exe程序入侵对方的计算机,过程如图所示。

相关文档
最新文档