缓冲区溢出实验(选做)

缓冲区溢出实验(选做)

1.实验环境:使用Windows XP,VC6环境

2.缓冲区溢出概念:缓冲区溢出是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。

3.代码编写:C语言编程中,一些不作边界检查的字符串拷贝函数(如strcpy)容易造成缓冲区溢出。

经过编写与调试,最终成功调试的代码如下(出现溢出的):

#include "string.h" 

\#include "stdio.h" 

\#include<windows.h>  

char name[]="AAAAAAAAAABCD";(实际截图略有修改)

int main() 

{   

char output[8];   

strcpy(output, name);//内存拷贝,如果name长度超过8,则出现缓冲区溢出  

for(int i=0;i<8&&output[i];i++)  

{  

printf("\\0x%x",output[i]);  

 }  

printf("\n");  

return 0;

}

4.代码验证原理:在程序中建立了一个字符串数组,长度为8,但输入内容超过8位,在内存拷贝的过程中出现缓冲区溢出,因此在终端只能显示八位十六机制数,并显示报错(不同系统中可能并不相同),而在修改代码后,实际输入位数小于或等于8位时,便可以完全输出并不再报错。

5.实验结果截图


6.总结预防缓冲区溢出的方法

(1)关闭不常使用的端口与服务,这些未关闭的端口、服务很容易成为黑客的攻击目标,一个合格的管理员应该清楚自己主机上所安装、运行的各种端口与服务,并多次多加防范

(2)拥有良好的代码编写规范,严格按照标准代码编写规范进行编写,而不要图省事,养成不良编写习惯,尽量避免代码中的安全隐患。

(3)及时更新系统并安装安全补丁,一些大的漏洞一经公布便会有系统厂商推出相应的安全补丁

(4)以所需的最小权限使用电脑,避免黑客直接利用被攻击者的账户进行攻击

(5)经常检查防火墙等安全软件,一旦出现异常流量波动便立刻检查是否遭受攻击,避免更多的损失。

posted @ 2021-10-31 17:37  20191303姜淳译  阅读(44)  评论(0编辑  收藏  举报