文档库 最新最全的文档下载
当前位置:文档库 › 缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告
缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告

班级: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程序入侵对方的计算机,过程如图所示。

缓冲区溢出攻击实验

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 32 int 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 corruption volatile int local = uniqueval(); val = getbuf(); // Check for corrupted stack if (local != uniqueval()) { printf("Sabotaged!: the stack has been corrupted\n"); } else if (val == cookie) { printf("Boom!: getbuf returned 0x%x\n", val); validate(3);

数据挖掘实验报告

《数据挖掘》Weka实验报告 姓名_学号_ 指导教师 开课学期2015 至2016 学年 2 学期完成日期2015年6月12日

1.实验目的 基于https://www.wendangku.net/doc/3a4982701.html,/ml/datasets/Breast+Cancer+WiscOnsin+%28Ori- ginal%29的数据,使用数据挖掘中的分类算法,运用Weka平台的基本功能对数据集进行分类,对算法结果进行性能比较,画出性能比较图,另外针对不同数量的训练集进行对比实验,并画出性能比较图训练并测试。 2.实验环境 实验采用Weka平台,数据使用来自https://www.wendangku.net/doc/3a4982701.html,/ml/Datasets/Br- east+Cancer+WiscOnsin+%28Original%29,主要使用其中的Breast Cancer Wisc- onsin (Original) Data Set数据。Weka是怀卡托智能分析系统的缩写,该系统由新西兰怀卡托大学开发。Weka使用Java写成的,并且限制在GNU通用公共证书的条件下发布。它可以运行于几乎所有操作平台,是一款免费的,非商业化的机器学习以及数据挖掘软件。Weka提供了一个统一界面,可结合预处理以及后处理方法,将许多不同的学习算法应用于任何所给的数据集,并评估由不同的学习方案所得出的结果。 3.实验步骤 3.1数据预处理 本实验是针对威斯康辛州(原始)的乳腺癌数据集进行分类,该表含有Sample code number(样本代码),Clump Thickness(丛厚度),Uniformity of Cell Size (均匀的细胞大小),Uniformity of Cell Shape (均匀的细胞形状),Marginal Adhesion(边际粘连),Single Epithelial Cell Size(单一的上皮细胞大小),Bare Nuclei(裸核),Bland Chromatin(平淡的染色质),Normal Nucleoli(正常的核仁),Mitoses(有丝分裂),Class(分类),其中第二项到第十项取值均为1-10,分类中2代表良性,4代表恶性。通过实验,希望能找出患乳腺癌客户各指标的分布情况。 该数据的数据属性如下: 1. Sample code number(numeric),样本代码; 2. Clump Thickness(numeric),丛厚度;

SEED信息安全实验系列:缓冲区溢出漏洞实验

缓冲区溢出漏洞实验 一、实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备。 1、输入命令安装一些用于编译32位C程序的东西: sudo apt-get update sudo apt-get install lib32z1 libc6-dev-i386 sudo apt-get install lib32readline-gplv2-dev 2、输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash: 三、实验步骤 3.1 初始设置

Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能: sudo sysctl -w kernel.randomize_va_space=0 此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。 linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序: sudo su cd /bin rm sh ln -s zsh sh exit 3.2 shellcode 一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是shellcode。 观察以下代码: #include int main( ) { char *name[2]; name[0] = ‘‘/bin/sh’’; name[1] = NULL; execve(name[0], name, NULL); } 本次实验的shellcode,就是刚才代码的汇编版本: \x31\xc0\x50\x68"//sh"\x68"/bin"\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80 3.3 漏洞程序 把以下代码保存为“stack.c”文件,保存到/tmp 目录下。代码如下: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our task is to exploit this vulnerability */ #include #include #include int bof(char *str) { char buffer[12]; /* The following statement has a buffer overflow problem */strcpy(buffer, str); return 1;

数据挖掘实验报告(一)

数据挖掘实验报告(一) 数据预处理 姓名:李圣杰 班级:计算机1304 学号:1311610602

一、实验目的 1.学习均值平滑,中值平滑,边界值平滑的基本原理 2.掌握链表的使用方法 3.掌握文件读取的方法 二、实验设备 PC一台,dev-c++5.11 三、实验内容 数据平滑 假定用于分析的数据包含属性age。数据元组中age的值如下(按递增序):13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25, 25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70。使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程序具有通用性): (a) 使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。 (b) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。 (c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。 四、实验原理 使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值 五、实验步骤 代码 #include #include #include #define DEEP 3 #define DATAFILE "data.txt" #define VPT 10 //定义结构体 typedef struct chain{ int num; struct chain *next; }* data; //定义全局变量 data head,p,q; FILE *fp; int num,sum,count=0; int i,j; int *box; void mean(); void medain(); void boundary(); int main () { //定义头指针 head=(data)malloc(sizeof(struc t chain)); head->next=NULL; /*打开文件*/ fp=fopen(DATAFILE,"r"); if(!fp) exit(0); p=head; while(!feof(fp)){

缓冲区溢出实验报告

华中科技大学计算机学院《信息系统应用安全》实验报告 实验名称缓冲区溢出实验 团队成员: 教师评语:

一.实验环境 ?操作系统:Windows XP SP3 ?编译平台:Visual C++ 6.0 ?调试环境:OllyDbg 二.实验目的 1.掌握缓冲区溢出的原理; 2.掌握缓冲区溢出漏洞的利用技巧; 3.理解缓冲区溢出漏洞的防范措施。 三.实验内容及步骤 1.缓冲区溢出漏洞产生的的基本原理和攻击方法 ?缓冲区溢出模拟程序 程序源代码如下: 运行该程序产生访问异常:

由于拷贝字符串时产生缓冲区溢出,用“ABCD”字符串的值覆盖了原来EIP的值,所以main函数返回时EIP指向44434241,引发访问异常。 运行命令窗口的shellcode shellcode测试代码如下: #include "string.h" #include "stdio.h" #include char name[]= "\x41\x41\x41\x41" "\x41\x41\x41\x41" "\x41\x41\x41\x41" ///覆盖ebp "\x12\x45\xfa\x7f" ////覆盖eip,jmp esp地址7ffa4512 "\x55\x8b\xec\x33\xc0\x50\x50\x50\xc6\x45\xf4\x6d" "\xc6\x45\xf5\x73\xc6\x45\xf6\x76\xc6\x45\xf7\x63" "\xc6\x45\xf8\x72\xc6\x45\xf9\x74\xc6\x45\xfa\x2e" "\xc6\x45\xfb\x64\xc6\x45\xfc\x6c\xc6\x45\xfd\x6c" "\x8d\x45\xf4\x50\xb8" "\x77\x1d\x80\x7c" // LoadLibraryW的地址 "\xff\xd0" "\x55\x8b\xec\x33\xff\x57\x57\x57\xc6\x45\xf4\x73" "\xc6\x45\xf5\x74\xc6\x45\xf6\x61\xc6\x45\xf7\x72" "\xc6\x45\xf8\x74\xc6\x45\xf9\x20\xc6\x45\xfa\x63"

实验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()地址,注意是小端方式存储。 这样操作完成,就可以得到预期结果了。 1.2 解题过程 首先进入GDB对bufbomb进行调试,先在调用getbuf()处设置断点,然后运行。 注:此时的输入文件exploit_raw.txt文件中是随便填的,并不影响我调用smoke(),因为我会在gdb中使用set指令直接修改getbuf()的返回地址。 此时查看运行程序的调用栈帧结构,如下所示: 上图说明当getbuf()执行完后,会返回到test()函数中(返回到地址0x08048db2,我们要修改存放这个值的地址单元,改为smoke的入口地址值)。

数据挖掘实验报告资料

大数据理论与技术读书报告 -----K最近邻分类算法 指导老师: 陈莉 学生姓名: 李阳帆 学号: 201531467 专业: 计算机技术 日期 :2016年8月31日

摘要 数据挖掘是机器学习领域内广泛研究的知识领域,是将人工智能技术和数据库技术紧密结合,让计算机帮助人们从庞大的数据中智能地、自动地提取出有价值的知识模式,以满足人们不同应用的需要。K 近邻算法(KNN)是基于统计的分类方法,是大数据理论与分析的分类算法中比较常用的一种方法。该算法具有直观、无需先验统计知识、无师学习等特点,目前已经成为数据挖掘技术的理论和应用研究方法之一。本文主要研究了K 近邻分类算法,首先简要地介绍了数据挖掘中的各种分类算法,详细地阐述了K 近邻算法的基本原理和应用领域,最后在matlab环境里仿真实现,并对实验结果进行分析,提出了改进的方法。 关键词:K 近邻,聚类算法,权重,复杂度,准确度

1.引言 (1) 2.研究目的与意义 (1) 3.算法思想 (2) 4.算法实现 (2) 4.1 参数设置 (2) 4.2数据集 (2) 4.3实验步骤 (3) 4.4实验结果与分析 (3) 5.总结与反思 (4) 附件1 (6)

1.引言 随着数据库技术的飞速发展,人工智能领域的一个分支—— 机器学习的研究自 20 世纪 50 年代开始以来也取得了很大进展。用数据库管理系统来存储数据,用机器学习的方法来分析数据,挖掘大量数据背后的知识,这两者的结合促成了数据库中的知识发现(Knowledge Discovery in Databases,简记 KDD)的产生,也称作数据挖掘(Data Ming,简记 DM)。 数据挖掘是信息技术自然演化的结果。信息技术的发展大致可以描述为如下的过程:初期的是简单的数据收集和数据库的构造;后来发展到对数据的管理,包括:数据存储、检索以及数据库事务处理;再后来发展到对数据的分析和理解, 这时候出现了数据仓库技术和数据挖掘技术。数据挖掘是涉及数据库和人工智能等学科的一门当前相当活跃的研究领域。 数据挖掘是机器学习领域内广泛研究的知识领域,是将人工智能技术和数据库技术紧密结合,让计算机帮助人们从庞大的数据中智能地、自动地抽取出有价值的知识模式,以满足人们不同应用的需要[1]。目前,数据挖掘已经成为一个具有迫切实现需要的很有前途的热点研究课题。 2.研究目的与意义 近邻方法是在一组历史数据记录中寻找一个或者若干个与当前记录最相似的历史纪录的已知特征值来预测当前记录的未知或遗失特征值[14]。近邻方法是数据挖掘分类算法中比较常用的一种方法。K 近邻算法(简称 KNN)是基于统计的分类方法[15]。KNN 分类算法根据待识样本在特征空间中 K 个最近邻样本中的多数样本的类别来进行分类,因此具有直观、无需先验统计知识、无师学习等特点,从而成为非参数分类的一种重要方法。 大多数分类方法是基于向量空间模型的。当前在分类方法中,对任意两个向量: x= ) ,..., , ( 2 1x x x n和) ,..., , (' ' 2 ' 1 'x x x x n 存在 3 种最通用的距离度量:欧氏距离、余弦距 离[16]和内积[17]。有两种常用的分类策略:一种是计算待分类向量到所有训练集中的向量间的距离:如 K 近邻选择K个距离最小的向量然后进行综合,以决定其类别。另一种是用训练集中的向量构成类别向量,仅计算待分类向量到所有类别向量的距离,选择一个距离最小的类别向量决定类别的归属。很明显,距离计算在分类中起关键作用。由于以上 3 种距离度量不涉及向量的特征之间的关系,这使得距离的计算不精确,从而影响分类的效果。

缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告 班级: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溢出,从而捆绑

山东大学信息安全实验报告

山东大学软件学院 信息安全导论课程实验报告 学号:201300301385 姓名:周强班级: 2013级八班 实验题目:缓冲区溢出实验 实验学时:日期: 实验目的: (1)了解缓冲区溢出的原理 (2)利用缓冲区溢出现象构造攻击场景 (3)进一步思考如何防范基于缓冲区溢出的攻击 硬件环境: 软件环境: WindowsXP操作系统 VS2008 实验步骤与内容: (1)了解缓冲区溢出的原理 缓冲区溢出简单来说就是计算机对接收的输入数据没有进行有效的检测(理情况下是程序检测数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。 看一个代码实例,程序如下: void function(char *str) { char buffer[16]; strcpy(buffer,str); } 上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。

(2)利用缓冲区溢出现象构造攻击场景 首先打开Microsoft Visual C++,新建工程和cpp文件,复制实验指导书的代码进行编译连接: 单击运行按钮,然后第1次输入“zhouqianga”,第2次输入2个“ga”,即可看到输出“correct”。

按F10开始进行逐步调试: 当第一次执行gets()函数之前,内存情况如下图所示

在最新的版本中gets被认为是不安全的,gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。现在都被要求改为get_s。来防止溢出。 如下图所示。 (3)学习例子程序2:数据被执行 在xp系统下,直接运行Exploit-1.1.exe,如下图所示:

数据挖掘实验报告-关联规则挖掘

数据挖掘实验报告(二)关联规则挖掘 姓名:李圣杰 班级:计算机1304 学号:1311610602

一、实验目的 1. 1.掌握关联规则挖掘的Apriori算法; 2.将Apriori算法用具体的编程语言实现。 二、实验设备 PC一台,dev-c++5.11 三、实验内容 根据下列的Apriori算法进行编程:

四、实验步骤 1.编制程序。 2.调试程序。可采用下面的数据库D作为原始数据调试程序,得到的候选1项集、2项集、3项集分别为C1、C2、C3,得到的频繁1项集、2项集、3项集分别为L1、L2、L3。

代码 #include #include #define D 4 //事务的个数 #define MinSupCount 2 //最小事务支持度数 void main() { char a[4][5]={ {'A','C','D'}, {'B','C','E'}, {'A','B','C','E'}, {'B','E'} }; char b[20],d[100],t,b2[100][10],b21[100 ][10]; int i,j,k,x=0,flag=1,c[20]={0},x1=0,i1 =0,j1,counter=0,c1[100]={0},flag1= 1,j2,u=0,c2[100]={0},n[20],v=1; int count[100],temp; for(i=0;i=MinSupCount) { d[x1]=b[k]; count[x1]=c[k]; x1++; } } //对选出的项集中的元素进行排序 for(i=0;i

华科_计算机系统实验报告

课程实验报告课程名称:计算机系统基础 专业班级: 学号: 姓名: 指导教师: 报告日期:年月日 计算机科学与技术学院

目录 实验1: (1) 实验2: (7) 实验3: (24) 实验总结 (34)

实验1:数据表示 1.1 实验概述 实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验目标:加深对数据二进制编码表示的了解。 实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。 实验语言:c。 实验环境:linux 1.2 实验内容 需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。 1)位操作 表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。 你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。 表1 位操作题目列表

2)补码运算 表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。 表2 补码运算题目列表 3)浮点数操作 表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。 表3 浮点数操作题目列表

大数据挖掘weka大数据分类实验报告材料

一、实验目的 使用数据挖掘中的分类算法,对数据集进行分类训练并测试。应用不同的分类算法,比较他们之间的不同。与此同时了解Weka平台的基本功能与使用方法。 二、实验环境 实验采用Weka 平台,数据使用Weka安装目录下data文件夹下的默认数据集iris.arff。 Weka是怀卡托智能分析系统的缩写,该系统由新西兰怀卡托大学开发。Weka使用Java 写成的,并且限制在GNU通用公共证书的条件下发布。它可以运行于几乎所有操作平台,是一款免费的,非商业化的机器学习以及数据挖掘软件。Weka提供了一个统一界面,可结合预处理以及后处理方法,将许多不同的学习算法应用于任何所给的数据集,并评估由不同的学习方案所得出的结果。 三、数据预处理 Weka平台支持ARFF格式和CSV格式的数据。由于本次使用平台自带的ARFF格式数据,所以不存在格式转换的过程。实验所用的ARFF格式数据集如图1所示 图1 ARFF格式数据集(iris.arff)

对于iris数据集,它包含了150个实例(每个分类包含50个实例),共有sepal length、sepal width、petal length、petal width和class五种属性。期中前四种属性为数值类型,class属性为分类属性,表示实例所对应的的类别。该数据集中的全部实例共可分为三类:Iris Setosa、Iris Versicolour和Iris Virginica。 实验数据集中所有的数据都是实验所需的,因此不存在属性筛选的问题。若所采用的数据集中存在大量的与实验无关的属性,则需要使用weka平台的Filter(过滤器)实现属性的筛选。 实验所需的训练集和测试集均为iris.arff。 四、实验过程及结果 应用iris数据集,分别采用LibSVM、C4.5决策树分类器和朴素贝叶斯分类器进行测试和评价,分别在训练数据上训练出分类模型,找出各个模型最优的参数值,并对三个模型进行全面评价比较,得到一个最好的分类模型以及该模型所有设置的最优参数。最后使用这些参数以及训练集和校验集数据一起构造出一个最优分类器,并利用该分类器对测试数据进行预测。 1、LibSVM分类 Weka 平台内部没有集成libSVM分类器,要使用该分类器,需要下载libsvm.jar并导入到Weka中。 用“Explorer”打开数据集“iris.arff”,并在Explorer中将功能面板切换到“Classify”。点“Choose”按钮选择“functions(weka.classifiers.functions.LibSVM)”,选择LibSVM分类算法。 在Test Options 面板中选择Cross-Validatioin folds=10,即十折交叉验证。然后点击“start”按钮:

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

实验六报告

如图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请求缓冲区溢出漏洞”,如果用户在受影响

缓冲区溢出攻击详细讲解

缓冲区溢出攻击详细讲解 缓冲区溢出(Buffer Overflow)是计算机安全领域既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Studio2010。接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解方式去挖掘缓冲区溢出背后的底层机制。 一、代码 <=> 数据 顾名思义,缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。 缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区的,因此所谓缓冲区可以更抽象地理解为一段可读写的存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写存中已经被蓄意设定好的恶意代码。按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在存的,同样程序的数据也在存中,因此直接从存的二进制形式上是无法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。

数据挖掘实验报告1

实验一 ID3算法实现 一、实验目的 通过编程实现决策树算法,信息增益的计算、数据子集划分、决策树的构建过程。加深对相关算法的理解过程。 实验类型:验证 计划课间:4学时 二、实验内容 1、分析决策树算法的实现流程; 2、分析信息增益的计算、数据子集划分、决策树的构建过程; 3、根据算法描述编程实现算法,调试运行; 4、对所给数据集进行验算,得到分析结果。 三、实验方法 算法描述: 以代表训练样本的单个结点开始建树; 若样本都在同一个类,则该结点成为树叶,并用该类标记; 否则,算法使用信息增益作为启发信息,选择能够最好地将样本分类的属性; 对测试属性的每个已知值,创建一个分支,并据此划分样本; 算法使用同样的过程,递归形成每个划分上的样本决策树 递归划分步骤,当下列条件之一成立时停止: 给定结点的所有样本属于同一类; 没有剩余属性可以进一步划分样本,在此情况下,采用多数表决进行 四、实验步骤 1、算法实现过程中需要使用的数据结构描述: Struct {int Attrib_Col; // 当前节点对应属性 int Value; // 对应边值 Tree_Node* Left_Node; // 子树 Tree_Node* Right_Node // 同层其他节点 Boolean IsLeaf; // 是否叶子节点 int ClassNo; // 对应分类标号 }Tree_Node; 2、整体算法流程

主程序: InputData(); T=Build_ID3(Data,Record_No, Num_Attrib); OutputRule(T); 释放内存; 3、相关子函数: 3.1、 InputData() { 输入属性集大小Num_Attrib; 输入样本数Num_Record; 分配内存Data[Num_Record][Num_Attrib]; 输入样本数据Data[Num_Record][Num_Attrib]; 获取类别数C(从最后一列中得到); } 3.2、Build_ID3(Data,Record_No, Num_Attrib) { Int Class_Distribute[C]; If (Record_No==0) { return Null } N=new tree_node(); 计算Data中各类的分布情况存入Class_Distribute Temp_Num_Attrib=0; For (i=0;i=0) Temp_Num_Attrib++; If Temp_Num_Attrib==0 { N->ClassNo=最多的类; N->IsLeaf=TRUE; N->Left_Node=NULL;N->Right_Node=NULL; Return N; } If Class_Distribute中仅一类的分布大于0 { N->ClassNo=该类; N->IsLeaf=TRUE; N->Left_Node=NULL;N->Right_Node=NULL; Return N; } InforGain=0;CurrentCol=-1; For i=0;i

数据挖掘实验报告三

实验三 一、实验原理 K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。 在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。 算法原理: (1) 随机选取k个中心点; (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类; (3) 更新中心点为每类的均值; (4) j<-j+1 ,重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步 数,误差不变. 空间复杂度o(N) 时间复杂度o(I*K*N) 其中N为样本点个数,K为中心点个数,I为迭代次数 二、实验目的: 1、利用R实现数据标准化。 2、利用R实现K-Meams聚类过程。 3、了解K-Means聚类算法在客户价值分析实例中的应用。 三、实验内容 依据航空公司客户价值分析的LRFMC模型提取客户信息的LRFMC指标。对其进行标准差标准化并保存后,采用k-means算法完成客户的聚类,分析每类的客户特征,从而获得每类客户的价值。编写R程序,完成客户的k-means聚类,获得聚类中心与类标号,并统计每个类别的客户数

四、实验步骤 1、依据航空公司客户价值分析的LRFMC模型提取客户信息的LRFMC指标。

2、确定要探索分析的变量 3、利用R实现数据标准化。 4、采用k-means算法完成客户的聚类,分析每类的客户特征,从而获得每类客户的价值。

客户的k-means聚类,获得聚类中心与类标号,并统计每个类别的客户数 六、思考与分析 使用不同的预处理对数据进行变化,在使用k-means算法进行聚类,对比聚类的结果。 kmenas算法首先选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。 这样做的前提是我们已经知道数据集中包含多少个簇. 1.与层次聚类结合 经常会产生较好的聚类结果的一个有趣策略是,首先采用层次凝聚算法决定结果

缓冲区溢出漏洞

缓冲区溢出漏洞 IBM软件研究院 缓冲区溢出漏洞,是一种在软件中最容易发生的漏洞。它发生的原理是,由于软件在处理用户数据时使用了不限边界的拷贝,导致程序内部一些关键的数据被覆盖,引发了严重的安全问题。 缓冲区指的是操作系统中用来保存临时数据的空间,一般分为栈和堆两种缓冲区类型。缓冲区溢出漏洞是一种非常普通、非常危险的漏洞,在各种操作系统、应用软件,甚至是Web应用程序中广泛存在。 利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。 在当前网络与操作系统安全中,50%以上的攻击都是来自于缓冲区溢出漏洞。而缓冲区溢出中,最为危险的是栈溢出,因为入侵者可以利用栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,然后为所欲为。 这里要澄清一个概念,很多人把缓冲区溢出称之为堆栈溢出漏洞,其实是错误的,堆溢出和栈溢出是两个不同的概念,都属于缓冲区溢出。 平时听说的缓冲区溢出大部分都是属于栈溢出。由于程序在实现的过程中,往往会自定义一些内存空间来负责接受或者存储数据,这些被直接定义的空间大小是有限的,因此当程序将过多的数据不经检查而直接放入这些空间中时,就会发生栈溢出。 栈溢出最为直接的危害是,这些被过量放进内存空间的数据会将函数的返回地址覆盖。“返回地址”的概念来自于CPU处理指令的结构设计。如果程序现在准备调用一个函数,CPU首先会将执行完这个函数后将要执行的指令地址存储到栈空间中,然后CPU开始执行函数,执行完毕,CPUCPU取出前面保存的指令地址,然后接着执行。这个“返回地址”是保存在栈空间中的,而程序一般定义的空间也是在栈中进行分配的,这就给了我们覆盖这个“返回地址”的机会。 栈是一个先进后出的空间,而堆则恰恰相反,是一个先进先出的空间。缓冲区溢出就是把这些空间装满后还继续往里面装。 但是对于一个软件来讲,危害可能不仅仅如此,用一个表来表示这个过程在栈溢出发生的时候,软件运行时内存中的情况。 正常: Lower Addresses buf2 buf1 var3 saved %EBP return address function()'s arguments saved %EBP

相关文档
相关文档 最新文档