新安装了Linux的虚拟机作为pwn的做题环境,在这里我用的是Ubuntu 18.04.2 LTS版本

基础编译环境

由于是使用的VMware简易安装,系统里好像并没有基础的编译运行环境

1
2
3
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install vim

在编译pwn题目时,可能会遇到

1
2
3
4
5
In file included from stack_example.c:1:0:
/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
#include <bits/libc-header-start.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

这是由于gcc环境没有安装完善

1
sudo apt-get install gcc-multilib

安装pwntools[参考]

安装所需要的系统运行库及环境

1
sudo apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential

pwntools是作为一个pip包提供,所以我们先换一下pip的源
修改pip配置文件(没有的话就新建一个)

1
2
sudo mkdir ~/.config/pip
sudo vim ~/.config/pip/pip.conf

添加清华的pip镜像源

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

升级pip包

1
pip install --upgrade pip

安装pwntools

1
sudo pip install --upgrade pwntools

这里可能会提示

1
2
3
4
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main

需要我们要修改一个文件来解决

1
sudo gedit /usr/bin/pip

将原来的

1
2
3
from pip import main
if __name__ == '__main__':
sys.exit(main())

改为

1
2
3
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())

可以使用python测试是否安装成功

1
python

进入python命令行状态后输入

1
from pwn import *

如果没有报错,则代表安装成功

安装LibcSearcher[参考]

用作根据泄露的libc中某一个函数的地址找到对应的lbc版本。

1
2
3
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop

这里git clone要下载数据库(大概一百多兆),emmm由于GitHub这身体状态,建议直接下载解压或者添加代理……不然等一晚上也不是没有可能

示例

1
2
3
4
5
6
7
8
from LibcSearcher import *

#第二个参数,为已泄露的实际地址,或最后12位(比如:d90),int类型
obj = LibcSearcher("fgets", 0X7ff39014bd90)

obj.dump("system") #system 偏移
obj.dump("str_bin_sh") #/bin/sh 偏移
obj.dump("__libc_start_main_ret")

安装peda插件

peda作为gdb的一个强大的插件,非常之好用
安装它也很简单,只需要两行命令~

1
2
git clone https://github.com/longld/peda.git ~/peda 
echo "source ~/peda/peda.py" >> ~/.gdbinit

安装完输入gdb
若显示 gdb-peda$ 则代表安装成功