基础环境

Ubuntu版本不需要太新,版本稳定就行,遇到问题利用搜索引擎也能轻易解决

  • VMware Pro 16
  • Ubuntu 18.04

常用软件

安装vim

强大的编辑器

1
sudo apt install vim

安装git

强大的github仓库管理神器

1
sudo apt install git

安装python3

参考链接

安装pip

强大的python包管理器

1
sudo apt install python3-pip

Pwn工具

pwntools

python2版本的pwntools

1
2
3
4
5
6
7
sudo apt-get install python python-pip python-dev libssl-dev libffi-dev build-essential

pip install -U setuptools

pip install --upgrade pip

pip install --upgrade pwntools

python3版本的pwntools

1
2
3
4
5
apt-get update

apt-get install python3 python3-dev python3-pip git

pip3 install --upgrade git+https://github.com/arthaud/python3-pwntools.git

gdb插件

pwndbg

1
2
3
4
5
git clone https://github.com/pwndbg/pwndbg

cd pwndbg

./setup.sh

peda

1
git clone https://github.com/longld/peda.git~ /peda

gef

网上大多数使用wget的命令进行操作,但是我都无法进行下载,于是直接复制gef.py里面的内容,在本地新建一个gef.py的文件进行粘贴。


由于gdb一次只能使用一个插件,所以使用自动化脚本进行切换

笔者插件存放目录结构

插件配置文件.gdbinit(位于用户根目录下,笔者的位于/home/jimp目录下,没有的话可以新建一个)

1
2
3
source /home/jimp/safetools/peda/peda.py
source /home/jimp/safetools/gef/gef.py #不知道为啥这条影响其他插件的使用,故笔者本地已经删除
source /home/jimp/safetools/pwndbg/gdbinit.py

gdb.sh文件(创建于/usr/local/sbin目录下)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
function Mode_change {
name=$1
gdbinitfile=/home/jimp/.gdbinit #这个路径按照你的实际情况修改
# gdbinitfile=/root/Desktop/mode

peda="source /home/jimp/safetools/peda/peda.py" #这个路径按照你的实际情况修改
gef="source /home/jimp/safetools/gef/gef.py" #这个路径按照你的实际情况修改
pwndbg="source /home/jimp/safetools/pwndbg/gdbinit.py" #这个路径按照你的实际情况修改

sign=$(cat $gdbinitfile | grep -n "#this place is controled by user's shell")
#这是一个定位flag,此处上面的查找内容要和你自己的保持一致

pattern=":#this place is controled by user's shell"
number=${sign%$pattern}
location=$[number+2]

parameter_add=${location}i
parameter_del=${location}d

message="TEST"

if [ $name -eq "1" ];then
sed -i "$parameter_del" $gdbinitfile
sed -i "$parameter_add $peda" $gdbinitfile
echo -e "Please enjoy the peda!\n"
elif [ $name -eq "2" ];then
sed -i "$parameter_del" $gdbinitfile
sed -i "$parameter_add $gef" $gdbinitfile
echo -e "Please enjoy the gef!\n"
else
sed -i "$parameter_del" $gdbinitfile
sed -i "$parameter_add $pwndbg" $gdbinitfile
echo -e "Please enjoy the pwndbg!\n"
fi
}

echo -e "Please choose one mode of GDB?\n1.peda 2.gef 3.pwndbg"

read -p "Input your choice:" num

if [ $num -eq "1" ];then
Mode_change $num
elif [ $num -eq "2" ];then
Mode_change $num
elif [ $num -eq "3" ];then
Mode_change $num
else
echo -e "Error!\nPleasse input right number!"
fi

gdb $1 $2 $3 $4 $5 $6 $7 $8 $9

简单使用

32位程序支持

1
sudo apt install libc6-dev-i386

qemu

1
2
3
4
5
6
7
sudo apt install qemu

sudo apt install qemu-system qemu-user-static binfmt-support

sudo apt install -y gcc-arm-linux-gnueabi

sudo apt install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential gdb-arm-none-eabi synaptic gcc-aarch64-linux-gnu eclipse-cdt git

LibcSearcher

1
2
3
4
5
6
7
sudo pip install capstone

git clone https://github.com/lieanu/LibcSearcher.git

cd LibcSearcher

python setup.py develop

ROPgadget

1
2
3
4
5
6
7
sudo apt install python-capstone

git clone https://github.com/JonathanSalwan/ROPgadget.git

cd ROPgadget

python setup.py install

one_gadget

1
2
3
sudo apt install ruby

gem install one_gadget