20169306《网络攻击与防范》第十周总结 缓冲区溢出漏洞试验 课堂实验

一、实验准备

输入命令安装一些用于编译32位C程序的东西
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

二、实验步骤

关闭使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址这一功能
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

设置zsh程序:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

把以下代码保存为“stack.c”文件,保存到 /tmp 目录下。代码如下:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

编译该程序,并设置SET-UID。命令如下:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

我们的目的是攻击刚才的漏洞程序,并通过攻击获得root权限。
把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下。代码如下:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

结果如图:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

接下来编译exploit.c程序:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

先运行攻击程序exploit,再运行漏洞程序stack:
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验
攻击成功。

课堂实验

1、攻击方使用nmap进行扫描
2、防守方使用tcpdump抓包
3、针对抓到的数据包利用Wireshark进行分析
20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验

20169306《网络攻击与防范》第十周总结
缓冲区溢出漏洞试验
课堂实验