使用pwn_deploy_chroot部署國賽pwn比賽題目
一、前言
最近打國賽,需要build,組內大佬們決定build pwn題,於是啥也不會的我就去看docker了。但是自己從頭看docker、dockerfile有點困難,最后找到一個工具pwn_deploy_chroot,很方便的完成了docker搭建。
二、Docker
Docker是一種容器,可以理解為輕量級虛擬機,由於占用的資源少,可以同時開啟很多個docker,所以很適合來做ctf題目的容器。
我參考的是這篇博客這可能是最為詳細的Docker入門吐血總結,關於docker的概念和基本用法大佬講的很詳細了。
由於我在ubuntu上安裝,參考官方文檔Get Docker CE for Ubuntu,一步一步照着做就行。
三、部署鏡像
首先要下一個鏡像,然后使用sudo cat ubuntu-16.04-x86_64.tar.gz |docker import - ubuntu:16.04
導入。不過好像如果dockerfile里面有FROM ubuntu:16.04
這種語句的話,docker會自己從官方鏡像源幫你下,之后可以用docker images
查看當前已有的鏡像。
四、pwn_deploy_chroot
完全自己搭建環境太難了。。幸好找到了大神的工具,沒錯就是pwn_deploy_chroot,參考博客如何安全快速地部署多道 ctf pwn 比賽題目。
因為我們已經安裝好了Docker,所以接下來安裝docker compose 和 git
apt install docker-compose git
把倉庫克隆到本地
git clone https://github.com/giantbranch/pwn_deploy_chroot.git
這是我最終的目錄結構,其中docker-compose.yml、Dockerfile、flags.txt、pwn.xinetd都是運行initialize.py后自動生成的,check和exp都是官方給的。
要使用這個工具,我們只需要 3 步:
1、將所有 pwn 題目放入 bin 目錄(注意名字不帶特殊字符,因為會將文件名作為 linux 用戶名)
2、python initialize.py
3、docker-compose up --build -d
它會自動部署pwn題,端口默認從10000依次增加。
因為國賽要求端口是8888,所以我們要修改一下config.py,把這里的10000改成8888,然后把官方測試用的pwn放到bin里
運行initialize.py
會出現生成的flag、端口和文件名。
接下來啟動環境
docker-compose up --build -d
顯示done,用netstat -antp | grep docker
查看,確認完成
可以進入image去玩玩,先sudo docker ps
查看當前運行着的容器,然后sudo docker exec -ti fa53dbfdb6b7 bash
進入
五、check && exp
輸入ifconfig
查看docker的ip,嘗試用nc連
最后用官方給的check和exp來驗證是否正確
成功跑出flag!接下來只要把我們自己出的pwn題放進bin,重復以上步驟就可以了。
六、參考鏈接
這可能是最為詳細的Docker入門吐血總結
如何安全快速地部署多道 ctf pwn 比賽題目
Docker 創建鏡像、修改、上傳鏡像
ctf pwn出題和搭建環境