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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

山东大学软件学院

信息安全导论课程实验报告

学号: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,如下图所示:

但是在计算器下输入数字后,将计算器关闭,会出现如下对话框:

当程序返回时,改变了程序入口地址,让其跳转并且执行cmd.exe calc.exe两个程序(打开计算器)并执行abc.bat批处理程序。

abc.bat程序中为创建新用户的代码。

@net user abc 123 /add > nul

@net localgroup administrators abc /add > nul

(4)分析最近的软件更新对防缓冲区溢出的支持

1、iOS 4.3.4 软件更新

CoreGraphics

适用于:适用于 iPhone 3GS 和 iPhone 4(GSM 机型)的 iOS 3.0 到 4.3.3、适用于 iPod touch(第 3 代)和更新机型的 iOS 3.1 到 4.3.3、适用于 iPad 的 iOS 3.2 到 4.3.3

影响:查看恶意制作的 PDF 文件可能会导致应用软件意外终止或任意代码执行

说明:FreeType 在处理 TrueType 字体时存在缓冲区溢出。查看恶意制作的 PDF 文件可能会导致应用软件意外终止或任意代码执行。

CVE-ID

CVE-2010-3855

2、iOS 5 软件更新

ImageIO

适用于:适用于 iPhone 3GS 和 iPhone 4 的 iOS 3.0 到 4.3.5、适用于 iPod touch (第 3 代)和更新机型的 iOS 3.1 到 4.3.5、适用于 iPad 的 iOS 3.2 到 4.3.5

影响:查看恶意制作的 TIFF 图像可能会导致应用软件意外终止或任意代码执行

说明:libTIFF 在处理 CCITT 组别 4 编码的 TIFF 图像时存在缓冲区溢出。

CVE-ID

CVE-2011-0192:Apple

(5)进一步思考如何防范基于缓冲区溢出的攻击

1、关闭不用的端口或服务

2、安装软件厂商的补丁

3、在防火墙上过滤特殊的流量

4、自己检察关键的服务程序

5、用所需要的最小权限来运行软件

结论分析与体会:

在这次的实验中,我了解并学习了缓冲区溢出的原因及危害。缓冲区溢出漏洞易被利用形成缓冲区攻击,会导致运行失败,系统关机,重新启动,或者执行攻击者的命令。为了有效防范这种漏洞,我也特意去查了相关资料,有效防范这种漏洞,一方面开发者在开发阶段就要注意编写正确的代码,另一方面,用户要及时更新软件厂商的补丁,以所需要的最小权限来运行程序。

相关文档
最新文档