“缓冲区溢出漏洞实验”实验报告

缓冲区溢出漏洞实验

一.实验步骤: (一)实验一 1.首先,按照实验指导书配置好实验环境:

图片描述 并按照实验指导书上逐步完成,在此不再赘述。

2.得到sheelcode在内存中的地址 图片描述

图片描述 我们计算shellcode的地址为 0xffffd060(十六进制)+100(十进制)=0xffffd0c4(十六进制),并修改exploit.c文件,将 \x??\x??\x??\x?? 修改为 \x60\xd0\xff\xff,如下图所示。 图片描述

3.编译程序,并用攻击程序来攻击漏洞程序,可以得到管理权限root,符合预期。 图片描述

(二)实验二 要求:通过命令”sudo sysctl -w kernel.randomize_va_space=2“打开系统的地址空间随机化机制,重复用exploit程序攻击stack程序,观察能否攻击成功,能否获得root权限。

1.退回程序初始状态,设置sudo sysctl -w kernel.randomize_va_space=2,其余不变。 图片描述

2.查看str地址,并计算出相应的shellcode的地址。 图片描述 如上图我们可以看到str的起始地址是有变化的。计算完后的地址为0xff818234。

3.更改完相应程序后,重新编译,并用攻击程序再次攻击漏洞程序,这时可以发现结果是不能够成功的,如下图所示。 图片描述

(三)实验三 要求:将/bin/sh重新指向/bin/bash(或/bin/dash),观察能否攻击成功,能否获得root权限。 1.再次回到初始状态,此时的sudo sysctl -w kernel.randomize_va_space=0. 图片描述

2.查看str的起始地址,并计算出相应的shellcode的地址。 图片描述

3.重新编译,并用攻击程序攻击漏洞程序。此时可以发现,攻击成功,顺利获取root权限。 图片描述

二.实验感想 本次实验虽然比较简单,但我还是遇到了各种各样的问题,反复做了很多很多遍才成功。这不仅提升了我的动手能力,也锻炼了我自己查找错误,解决问题的能力,同时让我对缓冲区溢出漏洞有了深一层次的理解,收获很多。

最新评论
暂无评论~