給實驗室同學搭建的CTFD平台用於內部訓練和CTF的校賽,為了循序漸進當然是先內部出一些簡單入門的題目,但是網上大部分關於CTFD平台的都只是部署,而關於題目放置的內容卻很少,雖然這個過程比較簡單,但還是記錄一下
部署自制題目一共分為以下幾步(以WEB題目為例,實際上如果是逆向,雜項,密碼學這些不需要占用服務器資源類型的題目,部署起來會更簡單,比如在題目的鏈接里面直接放一個百度網盤的下載鏈接):
-
出一道WEB題目
-
將其使用Docker打包,編寫Dockerfile和docker-compose.yml文件
-
在服務器上運行該Docker
-
CTFD管理員登錄,設置該題目
第一步,出一道WEB題目,關於此,師傅們可以有各種各樣的思路,這里為了方便示范,舉例為 目錄爆破尋找 .flag.swp 交換文件,使用 VIM 恢復獲取flag的題目
想好思路之后,編寫代碼並在本地的phpstudy環境上運行成功,目錄為:01_Find_Fl4g_File
,結構為:
index.php的內容為:
Find the flag file edited by VIM
第二步,將其使用Docker打包,編寫Dockerfile和docker-compose.yml文件
我們使用基礎鏡像為:php:5.6-fpm-alpine
其Dockerfile為:
FROM php:5.6-fpm-alpine RUN rm -rf /var/www/html/* COPY ./files /var/www/html EXPOSE 80 WORKDIR /var/www/html CMD ["php", "-S", "0.0.0.0:80"]
假定讀者有一定Docker基礎,簡單介紹一下內容
FROM 是基於某個基礎鏡像
RUN 運行后面的命令,即將基礎鏡像生成后html文件夾下的內容都刪除掉,避免對題目造成影響,或者誤導做題選手
COPY復制本機文件夾下的內容到容器的文件夾下
EXPOSE 選擇暴露的端口,這個當然是選擇80端口,WEB默認端口,在docker-compose.yml文件中我們再修改端口映射
WORKDIR 設置工作目錄,這個設不設置都關系不大
CMD 每個Dockerfile中只能有一條CMD命令,一般用來啟動服務,這里我們用來啟動php
編寫好Dockerfile后,我們編寫docker-compose.yml文件,docker-compose.yml在存在多個容器的時候進行調度很方便,這里的docker-compose.yml文件比較簡單;
version: "2" services: web: build: . restart: always ports: - "0.0.0.0:13000:80" environment: - FLAG=flag{Vim_1s_VeRy_g00d}
接着進行第三步:在服務器上運行該Docker
此處其實沒啥注意的,將你本地測試好的題目保存到CTFD所在的服務器上,找個文件夾放置各個題目
如圖:
目錄為:
/home/ubuntu/CTFChallenge/web/01_Find_Fl4g_File
運行該docker
docker-compose up -d
加了 -d 參數之后服務在后台運行
進行第四步:CTFD管理員登錄,設置該題目
管理員登錄后,CTFd中Admin->Challenges
然后填寫相關的內容:
雖然沒有漢化,但是英文還是比較簡單,正常使用沒有問題,(不認識的多谷歌啦,其實就這幾個功能
確定后到用戶界面查看
點擊鏈接后正常跳轉:
來到題目界面,成功部署!
放上校內CTF訓練平台,歡迎各位師傅來玩哇,后期會放很多基礎,入門以及有意思的原創題目上去。