Ubuntu16.04搭建pwn做题环境
本文最后修改于 296 天前,部分内容可能已经过时!
前言
工欲善其事必先利其器,做pwn题一定是需要一个完美的环境的,我就是深受环境的影响,有的时候一道题的exp在我的子系统上运行根本出不来flag,但是在虚拟机上就可以出flag。
本来是打算写一下在WSL环境下搭建pwn做题环境的,后来思考了一下,其实是一样的,所以就直接写一个在ubuntu上搭建做题环境,毕竟这个适用范围更广一些。之所以选择Ubuntu16.04,是因为在这个版本下pwn环境更加稳定也更好搭建。(pwntools官方给出的最匹配的版本应该是14.04的,但是16.04也不错,而且16.04界面明显是最好看的)
更换Ubuntu系统镜像源
Ubuntu的默认源是在美国的,对于我们来说速度会很慢,所以,我们先将其换为国内镜像源,国内镜像站是有很多的,如
阿里巴巴开源镜像站(https://developer.aliyun.com/mirror/)
网易开源镜像站(http://mirrors.163.com/)
中科大开源镜像站(http://mirrors.ustc.edu.cn/)
清华开源镜像站(https://mirrors.tuna.tsinghua.edu.cn/)
这些都是一百度就一大堆的东西。这里只给出一个阿里巴巴ubuntu16.04的镜像源
①确保身份是root
②备份sources.list(不是强制性的,因为换源一般都会成功)
③换源
这里采用了vim,如果提示没有请自行安装,或者选用gedit
cd /etc/apt/
sudo vim ./sources.list
之后将里面内容全部注释或删除掉,换为以下内容(这里要注意一定要换成对应版本的镜像源):
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
④更新源
保存完上述镜像源后,一定要更新一下源,不然数据源是不能使用的
apt-get update
apt-get upgrade
前置工具安装
换完源之后,我们就要开始准备一些前置工具了,来为我们后面插件以及工具的安装做好准备
①安装git
sudo apt install git
②安装python3以及pip3
因为python2已经被弃用,所以这里不再使用python2.7环境,当然由于ubuntu16.04内置python2.7,所以如果需要,只需把下面命令中的3去掉,即可安装python2版本的pip
sudo apt install python3 python3-pip
③pip换源
- 临时换源
pip install 你要安装的软件 -i https://mirrors.aliyun.com/pypi/simple/
- 永久换源
因为pip换源需要pip版本>10所以,考虑到好多刚装好的pip版本都是8,所以首先需要先更新一波pip版本
pip install --upgrade pip
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
这里换的是阿里的源,下面附上其他pip源
清华:https://pypi.tuna.tsinghua.edu.cn/simple
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
pwntools(及相关插件)安装
①pwntools安装
sudo apt-get update
sudo apt install python-dev libssl-dev libffi-dev build-essential
sudo pip3 install --upgrade pip
sudo pip3 install pwntools
安装好后,cmd进入python环境,输入
from pwn import *
如果未报错,即安装成功
②安装32位依赖库
apt install lib32ncurses5-dev
apt install lib32z1
③安装gdb
apt install gdb
④安装pwndbg
git clonehttps://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
⑤安装peda(这里据说是可以用apt install peda直接安装的)
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
一些其他的实用库插件
①ROPgadget安装
这是个经常用的工具,方便寻找gadge,在构造rop的时候会很方便
sudo pip3 install capstone
git clone https://github.com/lieanu/libc.git ~/LibcSearcher
cd ~/LibcSearcher
git submodule update --init --recursive
sudo python3 setup.py develop
②安装one_gadget
可以用来寻找libc库中的execve('/bin/sh', NULL, NULL)
sudo apt -y install ruby
sudo gem install one_gadget
③安装qira
这是一个挺好玩的调试工具,它会把运行中的程序生成快照,这样你可以随时看各个部分的状态(目前看来在wsl中是不支持的)
cd ~/
git clone https://github.com/geohot/qira.git
cd qira/
./install.sh
④安装radare2(一个自动化动调工具,可以试试,虽然我没试过)
git clone https://github.com/radareorg/radare2
cd radare2 ; sys/install.sh
配置Arm环境
①安装qemu(做arm题是会用到qemu-arm这个命令)
apt-get install qemu
sudo apt-get install qemu-system qemu-user-static binfmt-support
②依赖库安装
sudo apt-get install -y gcc-arm-linux-gnueabi
如果此时提示有别的依赖库没有装,可以使用
sudo apt-get -f install
之后再次输入
sudo apt-get install -y gcc-arm-linux-gnueabi
即可。arm环境我还没有用过,所以可能说的不是很详细。
这样,一个基本的pwn做题环境就基本搭建完成了,在wsl子系统中的安装步骤基本一致,只是有些插件不能安装,以及arm调试环境无法配置而已