缓冲区溢出漏洞实验
缓冲区溢出漏洞实验
一、实验原理
缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区,又被称为“堆栈”,在各个操作进程之间,指令会被临时储存在“堆栈”当中,“堆栈”也会出现缓冲区溢出。
二、实验过程
1.准备环境
安装用于编译32位C程序的软件包:
2.初始设置
进行初始设置:
3.漏洞程序
编辑漏洞:在/tmp目录下新建stack.c文件并编译:
编辑攻击程序:在/tmp目录下新建一个exploit.c文件:
4.攻击程序
gdb调试并str起始地址
设置断点
最后获得的Oxffffd4c0就是str地址
5.攻击结果
再编译exploit.c程序,运行攻击exploit,在运行漏洞程序stack。
攻击成功