实验地址:SEED 缓冲区溢出漏洞实验室
零、前言
之前学习了X86-64汇编,结合C语言代码了解了函数调用的底层原理,像栈帧什么的。这次通过自己动手做一个栈溢出漏洞攻击的实验,更加深刻的理解函数栈帧的底层布局。
一、实验准备
测试机器使用的Linux版本为:Ubuntu-64。
1. 配置32位Linux环境
sudo apt-get update
sudo apt-get install -y lib32z1 libc6-dev-i386
sudo apt-get install -y lib32readline-gplv2-dev
2. 关闭地址空间布局随机化(ASLR)
sudo sysctl -w kernel.randomize_va_space=0
3. 重定向bash
sudo su
cd /bin
rm sh
ln -s zsh sh
exit
# 使用bash
/bin/bash
4. 进入32位Linux环境
linux32
二、开始实验
1. 设计shellcode
设计一段shellcode:
#include <stdio.h>
int main() {
char* name[2];
name[0] = "/bin/sh";
name[1] = NULL;
execve(name[0<