# 环境搭建

# 虚拟机安装

  1. 安装 VMware Workstation PRO

  2. 下载 Ubuntu 镜像

    https://ubuntu.com/download/desktop

    多个版本,选择 Ubuntu 20.04.3 LTS 即可

  3. 打开 VMware Workstation PRO,选择创建新的虚拟机。

    选择下载的 Ubuntu 镜像

    输入用户名和密码(自定)

    设置虚拟机安装位置(一般在 D 盘新建一个文件夹专门放虚拟机)

    后面全部性能设置默认就好

  4. 安装完成后,输入之前设置的密码登录,弹窗全部跳过即可。

# 虚拟机配置

# 1. 换源

因为 Ubuntu 初始源在美国,从国内访问比较慢,所以这里换成清华源(阿里源)

  • 首先备份一下原文件:

    cd /etc/apt
    sudo cp sources.list sources.list.bak
  • 编辑 sources.list

    sudo gedit sources.list
  • 将其中的内容替换为如下内容:(20.04LTS 清华源)

    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

    (20.04LTS 阿里源)

    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

#deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse


* 更新一下源和已安装的软件包

  ```bash
  sudo apt update
  sudo apt upgrade

# 2. 必备软件安装

# Pip3

Python 包管理工具,很重要。

Ubuntu20 默认安装 python3,故安装 pip3。

安装后 pip/pip3 都可以使用。

sudo apt-get install python3-pip
# Git

git 的功能是拷贝一个 git 仓库到本地,通常用来下载 Github 上的工具。

sudo apt-get install git

Github 有时候连接不上,这里改一下 host。

在网站 www.ipaddress.com 查找下面两个域名对应的 ip

h
github.global.ssl.fastly.net
github.com

然后修改 host 文件

sudo gedit /etc/hosts

保存后重启虚拟机即可。

# Vim

文本编辑器,功能很强大,具体使用需要自己下去学习。

sudo apt-get install vim
# Pwntools

pwntools 是一个 CTF 框架和漏洞利用开发库,涵盖了 pwn 题利用脚本所需要的各种工具。包括方便的 IO 交互函数,ROP、格式化字符串等利用的自动化工具,shellcode 生成器等等,是目前最好用也是仅有的大型 pwn 利用框架。能节省大量编写脚本的时间。

极其重要!!!

python3-dev git libssl-dev libffi-dev build-essential
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install --upgrade pwntools
# 32 位依赖库
sudo apt-get install lib32ncurses5-dev
sudo apt-get install lib32z1
# Pwndbg/Peda/Gef

GDB 是一款功能强大的程序调试工具,是动态调试必不可少的工具,可以很方便的查看堆中链表的状态,各个地址的内容。GDB 拥有多个插件(peda、pwndbg、gef 等)这些插件提供了一些额外的命令,在可视化和功能上都进行了扩展。

推荐安装一个插件即可,多个插件的切换与系统环境变量相关,自行百度。

  • Pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
  • Peda
git clone https://github.com/longld/peda.git~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
  • Gef
wget -q -O-https://github.com/hugsy/gef/raw/master/scripts/gef.sh| sh

Pwndbg/Peda/Gef 插件可以自由切换,

sudo gedit ~/.gdbinit

打开 gdb 环境变量路径文件

以使用 pwndbg 为例:

source /home/coldwinds/pwndbg/gdbinit.py
#source ~/peda/peda.py

需要使用哪一个插件,在其他插件前面加上 # 注释即可

# 3. 实用软件安装

# ROP-garget

用来查找程序中一些指令的地址,64 位程序中运用较多。

sudo pip3 install capstone
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
sudo python3 setup.py install
# One_gadget

可以找到 libc 中的 execve ('/bin/sh', NULL, NULL),在构造其他条件后,利用一个 Gadget 就可以 GetShell。

sudo apt install ruby
sudo apt-get install gem
sudo gem install one_gadget
# LibcSearcher

在开启地址随机化后,通过泄露某一个函数的地址偏移,利用 LibcSearcher 可以搜索到该程序使用的 libc 版本,从而计算出其他函数的地址。

git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
sudo python3 setup.py develop
# seccomp-tools

用来读取 seccomp 沙箱规则。

sudo apt install gcc ruby-dev
sudo gem install seccomp-tools