一、题目
本实验的学习目标是让学生将从课堂上学到的有关缓冲区溢出漏洞的知识进行实践,从而获得有关该漏洞的第一手经验。缓冲区溢出是指程序试图将数据写入预先分配的固定长度缓冲区边界之外的情况。恶意用户可利用此漏洞改变程序的流控制,甚至执行任意代码。此漏洞是由于数据存储(如缓冲区)和控件存储(如返回地址)的混合造成的:数据部分的溢出会影响程序的控制流,因为溢出会改变返回地址。
本实验将提供四台不同的服务器,每台服务器运行一个带有缓冲区溢出漏洞的程序。实验任务是开发一个利用漏洞的程序,并最终获得这些服务器上的root权限。除了进行这些攻击实验之外,还将试验几种针对缓冲区溢出攻击的对策。学生需要评估这些计划是否有效,并解释原因。
二、过程
一、Level 1 Attack
1.准备工作:
在server-code文件路径中打开命令行,输入make;make install;
执行dcbuild和dcup命令
关闭防范机制:memory randomization
2.执行两次打印出的结果一致且输出地址为0xffffxxxx,则说明memory randomization已关闭
3.首先尝试传送exploit.py文件,得到结果如图,可知失败
4.修改exploit.py文件:
编写shellcode如图:
利用ebp 和 Buffer address 计算地址ret和offset,修改如图:
5.运行后传输badfile,若出现() SUCCESS SUCCESS ()则表示成功。
6.修改exploit.py文件,新建一个命令行窗口输入nc -l -p 7070开启监听,在另外一个窗口向server发送badfile文件,监听窗口得到以下内容,说明成功获取Revere Shell;
二、Level 2 Attack
1.在新窗口中输入echo hello | nc 10.9.0.6 9090
得到结果如图:
2.修改exploit2.py文件ret和s的值,处理不知道大小的 buffer。
解决方法由于不知offset则逐一尝试。
3.运行后传输文件,得到结果表示成功:
三、Level 3 Attack
1.在新窗口中输入echo hello | nc 10.9.0.7 9090,连接如下图:
2.修改exploit3.py文件如下图,
4.运行后传输文件,得到结果表示成功:
四、Level 4 Attack
1.在新窗口中输入echo hello | nc 10.9.0.8 9090,连接如下图:
2.修改exploit4.py文件如下图
3.运行后传输文件,得到结果表示成功:
五、level5
1.开启地址随机化
2.执行nc -lnv 7070开启监听
3.更改exploit.py文件为reverse shell,总用时4秒。
4.成功后监听窗口返回shell
六、level6
进入 server-code 文件夹,执行gcc -DBUF SIZE=100 -DSHOW_FP-z execstack -static -m32 -o stack-L1 stack.c。去除 -fno-stack-protector 编译 stack.c,并将 badfile 作为输入,可以看到检测到了 stack smashing。
进入 shellcode 文件夹,去除 -z execstack 编译call_shellcode.c 并运行,可以看到,栈不再可执行。
版权归原作者 啦啦啦啦啦啦啦噜噜 所有, 如有侵权,请联系我们删除。