一.实验步骤: (一)实验一 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权限。
二.实验感想 本次实验虽然比较简单,但我还是遇到了各种各样的问题,反复做了很多很多遍才成功。这不仅提升了我的动手能力,也锻炼了我自己查找错误,解决问题的能力,同时让我对缓冲区溢出漏洞有了深一层次的理解,收获很多。
学习时间 738分钟
操作时间 225分钟
按键次数 4716次
实验次数 8次
报告字数 1726字
是否完成 完成