应用场景
不同的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/15Utc5f2JnBWuvo4N9gp7VA 提取码: wsfc
CSDN
https://download.csdn.net/download/weixin_41748164/87024563
https://download.csdn.net/download/weixin_41748164/87024401
加载相应的docker
docker import - new_hangger_server < hangger_server.tar
备注
ubuntu18和ubuntu20 里面有gdb、gdbserver、pwndbg均可使用
ubuntu16的镜像较大就不再上传