文章目錄
拉取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