文章目录
需预先下载资源
由于Ubuntu16.04 LTS系统中的Python与gdb并不支持pwntools和pwndbg的安装,所以需要离线安装新版本的Python和gdb。
- 全部正式发行Ubuntu下载链接:http://old-releases.ubuntu.com/releases/
- gdb历史版本:https://sourceware.org/pub/gdb/releases/
- Python下载:https://www.python.org/downloads/
PWN环境配置
1、Ubuntu16.04安装及设置
- 使用VMware安装 Ubuntu 16(略)
- 安装vim:
sudo apt install vim
- 安装git:
sudo apt install git
- 系统安装后出现错误的解决办法
- “System program problem detected”弹窗
sudo rm /var/crash/*
sudo vim /etc/default/apport
,再将enable=1
修改为enable=0
- ubuntu16更新时报错E: Sub-process returned an error code
# 依次执行下列命令进行更新 sudo apt remove libappstream3 #卸载文件 sudo apt update #再次更新系统 sudo apt install --reinstall software-center software-center-aptdaemon-plugins
- “System program problem detected”弹窗
- 为了方便,我取消了屏保:system setting --> Security & Privacy
- 新建两个文件夹
mkdir /home/redbright/ctfpwn
sudo mkdir /pwnEnv
sudo chmod 777 /pwnEnv
2、离线安装Python3.8
- 安装python相关依赖项
sudo apt install python python-pip python-dev git libssl-dev libffi-dev build-essential
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
- 下载源码:wget https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tar.xz
- pip换国内源:为了保证root用户和redbright用户均能使用国内pip源,我在两个用户的家目录下均新建了
.pip
文件并配置了pip.conf
文件。
- 编译安装过程及命令
tar -xvf Python-3.8.16.tar.xz
cd Python-3.8.16
./configure # 生成makefile文件
./configure --enable-optimizations # 根据前一步运行完成后的提示执行该命令
sudo make
sudo make install
- 修改软链接
sudo rm /usr/bin/python
sudo rm /usr/bin/python3
sudo rm /usr/bin/pip
ln -s /usr/local/bin/python3.8 /usr/bin/python3
ln -s /usr/local/bin/python3.8 /usr/bin/python
ln -s /usr/local/bin/pip3.8 /usr/bin/pip3
ln -s /usr/local/bin/pip3.8 /usr/bin/pip
- ModuleNotFoundError: No module named ‘lsb_release‘解决办法:
sudo vim /usr/bin/lsb_release
- 将首行
#!/usr/bin/python3 -Es
,修改为#!/usr/bin/python3.5m -Es
3、安装pwntools
pip install pwntools
- 更新pip:
/usr/local/bin/python3.8 -m pip install --upgrade pip
4、离线安装gdb10.2
- 编译安装过程及命令
tar -xvf gdb-10.2.tar.xz
cd gdb-10.2
./configure # 生成makefile文件
sudo make
sudo make install
gdb -v # 查看是否安装成功
- 出现Makefile:490: recipe for target ‘gdb.info’ failed错误的解决办法
sudo apt install texinfo
5、pwngdb+pwndbg联合使用
先在根目录下使用指令mkdir pwnEnv
新建个文件夹,然后cd pwnEnv
进入该目录,在pwnEnv
目录下使用如下指令:
- 安装Pwngdb
git clone https://github.com/scwuaptx/Pwngdb.git
- 安装pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
- 编辑.gdbinit文件
gef和peda的安装命令具体见8、其他相关安装。为了保证root用户和redbright用户均能使用pwndbg,我在两个用户的家目录下均配置了.gdbinit
文件。
sudo cp /pwnEnv/Pwngdb/.gdbinit /root/.gdbinit
sudo vim /root/.gdbinit
sudo cp /root/.gdbinit /home/redbright/.gdbinit
- 启动GDB可能出现错误的解决办法
- ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl’ module is compiled with OpenSSL 1.0.2g
pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
- ModuleNotFoundError: No module named ‘_bz2’
- 下载文件:
_bz2.cpython-38-x86_64-linux-gnu.so
- 再依次执行下列命令:
- 下载文件:
- ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl’ module is compiled with OpenSSL 1.0.2g
sudo cp _bz2.cpython-38-x86_64-linux-gnu.so /usr/local/lib/python3.8/lib-dynload
cd /usr/local/lib/python3.8/lib-dynload
sudo chmod 777 _bz2.cpython-38-x86_64-linux-gnu.so
ls -al /usr/local/lib/python3.8/lib-dynload
6、PWN的系统环境情况
个人配置的pwn调试环境参数具体如下:
7、amd64系统中运行32位程序
默认情况下,Ubuntu amd64是不能运行32位程序的,要想在amd64环境中运行32位程序,我们需要安装一些支撑库文件。
sudo apt install libc6:i386
sudo apt install lib32stdc++6
sudo apt install lib32z1
至此,我完成了基于Ubuntu16.04 LTS的PWN调试环境的配置。
8、其他相关安装
- 安装gef和peda
git clone https://github.com/longld/peda.git
git clone https://github.com/hugsy/gef.git
# 在.gdbinit 文件添加下列两行
#source /pwnEnv/peda/peda.py
#source /pwnEnv/gef/gef.py
- 安装gdb-multiarch:
sudo apt install gdb-multiarch
- 安装patchelf(用来修改elf格式的动态库和可执行程序,可以修改动态链接库的库名字及链接库的PATH):
sudo apt install patchelf
- 安装ropper(用于显示不同文件格式的二进制文件信息)
git clone https://github.com/sashs/ropper.git
cd roppper
chmod +x setup.py
python setup.py install