缓冲区溢出漏洞实验

一、实验内容及步骤
1.理解缓冲区溢出的基本原理。
2.利用函数strcpy()编程实现一个简单的缓冲区溢出实例。
3.总结预防缓冲区溢出的方法。

二、实验过程
1.原理:
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

2.用strcpy()函数编程实现缓冲区溢出实例
代码:

#include"string.h"
#include"stdio.h"
#include<windows.h>
char name[]="aaaaaabcd";
int main()
{
	char output[8];//只能输出8位,超出部分不能正常输出
	strcpy(output,name);
	for(int i=0;i<8&&output[i];i++)
	{
		printf("\\0x%x",output[i]);
	}
	printf("\n");
	return 0;
}

实验结果

可见超过8位的d不能被正常输出,发生了缓冲区溢出

系统也发现了这个错误
3.预防措施:
(1)关闭端口或服务。管理员应该知道自己的系统上安装了什么,并且哪些服务正在运行;
(2)安装软件厂商的补丁,漏洞一公布,大的厂商就会及时提供补丁;
(3)在防火墙上过滤特殊的流量,无法阻止内部人员的溢出攻击;
(4)自己检查关键的服务程序,看看是否有可怕的漏洞;
(5)以所需要的最小权限运行软件。

三、实验体会
本次实验是关于缓冲区溢出的验证性实验。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。通过实验,一个简单的strcpy()函数和几行短短的代码就产生了这些错误。我对缓冲区溢出漏洞有了一个比较清晰的认识。对利用的方法也有了一个比较详细的了解,可以说获益匪浅。

posted @ 2021-10-31 22:03  dky20191311  阅读(130)  评论(0编辑  收藏  举报