一.实验描述
缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况,这一漏洞可以被
恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现时由于缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。
二.实验准备
输入命令sudo apt-get update 会进行更新
(图一)
输入命令sudo apt-get install lib32z1 libc6-dev-i386,读取软件包
(图二)
当执行完第二条命令式,会询问是否继续。
(图三)
(图四)
(图五)
2.输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来就不会那么灵活
三.实验步骤(具体看图,不过多文字阐述了)
实验的stack.c的代码
找到内存地址和设置断点
练习二
如果产生一个随机内存地址不能缓冲区溢出,具体的内容我已经在截图中阐明。
练习三图像以详细阐述
三、实验总结
在这次的实验过程中我深刻体会到缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。我们要更加注意在编程的过程中缓冲区安全问题。