实验一 缓冲区溢出漏洞实验
实验原理:缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。
实验过程 一、环境配置 1、安装用于编译32位C程序的软件包
sudo apt-get update
sudo apt-get install -y lib32z1 libc6-dev-i386 lib32readline6-dev
sudo apt-get install -y python3.6-gdbm gdb
二、初始设置 1、关闭地址空间随机化,便于猜测内存地址 2、使用zsh代替/bin/bash,避免shell程序在被调用时自动放弃特权 3、进入32位linux环境使用bash 三、实验步骤 1、在/tmp目录下新建stack.c文件输入代码 2、编译程序并设置SET-UID 3、找到shellcode在内存中的地址
gdb stack
disass main
计算shellcode的地址为 0xffffcfb0 + 0x64 = 0xffffd014 4、在/tmp下新建exploit.c文件并编译
5、运行攻击程序exploit和漏洞程序stack,输入whoami后可以发现获得了root权限
6、打开系统地址空间随机化,运行攻击程序和漏洞程序,发现出现段错误
7、关闭地址空间随机化并将/bin/sh重新指向/bin/bash,运行攻击程序和漏洞程序,发现无法获得root权限 ?
|