应用场景
不同的pwn题有不同的环境要求,堆题要求更多,patchelf可以满足一定场景的实现,但终究不如在实际对应的环境中搭建。如何快速搭建一个高效节省资源的环境也是一个不小的问题。
方法
高效节省资源:一个主要调试环境+多个运行环境 =主机+docker容器
步骤
主要调试环境
gdb+pwntools+pwndbg等等,网上这类教程很多,不细说。
多加一点:hyperpwn这个插件也挺好用的,支持gdb结果回溯,不需要再在翻滚轮了具体项目地址
https://github.com/bet4it/hyperpwn
主要的运行环境
针对buuctf中涉及ubuntu16、ubuntu18 ubuntu20三种主要环境,采用docker容器的方式搭建相应环境。
主要命令
sudo docker pull ubuntu:16.04 # 拉取16.04的镜像
sudo docker images # 列出镜像
sudo docker rename great_mestorf pwn_ubuntu16 # 重命名镜像
sudo docker run -it ubuntu:16.04
sudo docker start [CONTAINER ID] # 启动镜像
sudo docker cp 本地文件的路径 container_id:<docker容器内的路径> # 向docker传输文件
sudo docker attach [CONTAINER ID] # 进入镜像shell
apt install gdbserver # 在镜像shell中下载gdbserver
apt-get install build-essential # 在镜像shell中安装一些的运行库
gdbserver 宿主机IP:2345 二进制文件 # 在镜像shell中启动gdbserver
sudo docker commit -p 0fa9c9fce605 pwn_ubunt16_ori # 拍摄快照
gdb target remote 容器IP:2345 # 宿主机进行调试
运行效果
docker中运行文件
宿主机调试
当然也可以在相应的docker里面进行调试。
docker的链接
百度云
链接: https://pan.baidu.com/s/1wkRzwgPN_znicbUUNCo1TQ 提取码: hpq4
含有ubuntu16,有python3.9,gdb11,pwndbg
CSDN
https://download.csdn.net/download/weixin_41748164/87024563
https://download.csdn.net/download/weixin_41748164/87024401
加载相应的dockerdocker import - new_hangger_server < hangger_server.tar
备注
ubuntu18和ubuntu20 里面有gdb、gdbserver、pwndbg均可使用
ubuntu16的镜像较大就不再上传文章来源:https://www.toymoban.com/news/detail-430276.html
注
原版的ubuntu16 默认安装的是gdb7,python3.5,这两个在目前的pwndbg均不适用,所以需要自己重新编译python,在用编译好的python编译gdb。在python和gdb的版本都达到要求后,下载pwndbg,不运行setup.sh
,直接安装该插件所需要的依赖即可文章来源地址https://www.toymoban.com/news/detail-430276.html
sudo docker pull ubuntu:16.04
sudo docker run -it --privileged "ubuntu:16.04" /bin/bash
sudo docker start 9e666c6ef836
sudo docker attach 9e666c6ef836
apt-get update
apt-get install build-essential texinfo git vim
xz -dk gdb-11.2.tar.xz
xz -dk Python-3.8.15.tar.xz
tar -xvf Python-3.8.15.tar
tar -xvf gdb-11.2.tar.xz
#升级python
sudo apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
cd Python-3.8.15
./configure --prefix=/usr/local/python3
make & make install
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip
# 编译gdb
apt-get install libgmp-dev libncurses5-dev
cd gdb-11.2
mkdir build
cd build
../configure --with-python=/usr/bin/python3
make && make install
# 安装pwndbg
git clone https://github.com/pwndbg/pwndbg.git
pip install -r requirements.txt
echo "source /root/pwn/pwndbg/gdbinit.py" > ~/.gdbinit
# 解决编码问题
vim /etc/profile
export LANG=C.UTF-8
source /etc/profile
到了这里,关于pwn调试环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!