文章目录
拉取ubuntu镜像
docker pull ubuntu:18.04
运行容器
docker run -i -t -d --name=pwn-ubuntu-18.04 -v /ctf/work -p 23946:23946 --cap-add=SYS_PTRACE --security-opt seccomp:unconfined ubuntu:18.04
docker exec -it pwn-ubuntu-18.04 /bin/bash
安装环境
修改apt源
清华大学开源软件镜像站,选择对应的源
https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
依次执行下面的命令:
cd /etc/apt
# 保存原始的sources.list文件
cp sources.list sources.list.bak
apt-get update
apt-get install vim
# 更换源之后采用https协议,需要安装该软件才行
apt-get install apt-transport-https
# 覆盖原始的内容
echo '' > sources.list
# 将清华的源拷贝进去(Ctrl+Shift+v)保存
vim sources.list
apt-get update
修改pip源
cd ~/.pip
如果不存在.pip目录,则创建目录:
mkdir ~/.pip
cd ~/.pip
touch pip.conf
sudo gedit ~/.pip/pip.conf
在pip.conf中写入如下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
安装pwntools
apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
pip install pwntools
安装pwndbg
# 创建相应目录
cd /home
mkdir em
cd em
mkdir software
cd software/
# 安装
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
apt-get install sudo
./setup.sh
安装ROPgadget、libc-database、one_gadget
apt-get install ruby
apt-get install gem
gem install one_gadget
安装tmux
使用bash进入到docker中后只有一个命令行终端,这样很不方便,可以在该容器中安装tmux,来同时开启多个终端。
使用
apt-get install tmux来安装
启动鼠标切换界面:
touch .tmux.conf
vim .tmux.conf
set -g mouse on
注意:在启用鼠标切换之后如果需要选中终端中的部分内容,需要在按住Shift的情况下才可以
与主机拷贝文件
从主机往容器中拷贝
docker cp C:\Users\Administrator\Desktop\\pwn pwn-ubuntu-18.04:\ctf\work
保存容器为新镜像
经过上面的步骤,我们已经搭建好了需要的环境,下面就将这个容器打包成镜像
首先退出该容器,然后查看已经停止运行的容器:
docker ps -a
得到容器的id。
使用commit命令提交该容器为镜像:
# 可能需要一点时间
docker commit -m "pwn ubuntu 18.04 v1" f6d36cb41b26 yusakul/pwn-ubuntu-18.04:v1
# 其中`-m`为提交镜像时的描述
# 5cfd7de2e9f7 为容器的id
# e3pem/dockerpwn:v2 为镜像的标签,将e3pem换成自己在dockerhub上的用户名
# 查看构造出来的镜像
docker images
可以选择将镜像push到dockerhub,需要登陆dockerhub
# docker tag yusakul/pwn-ubuntu-18.04:v1 yusakul/pwn-ubuntu-18.04
docker push yusakul/pwn-ubuntu-18.04:v1
下载地址
docker pull yusakul/pwn-ubuntu-18.04:v1
docker run -i -t -d --name=pwn-ubuntu-18.04 -v /ctf/work -p 23946:23946 --cap-add=SYS_PTRACE --security-opt seccomp:unconfined yusakul/pwn-ubuntu-18.04:v1
示例
socat tcp-listen:10001,reuseaddr,fork EXEC:./heapTest_x64,pty,raw,echo=0
from pwn import *
io=remote("172.17.0.2",10001)
io.recv()
io.send("")
io.send("\n")
io.sendline("")
io.close()
补充
添加32位程序支持
apt-get install lib32z1 lib32ncurses5
apt-get install lib32stdc++6