CTFD平台部署自制題目指北(灌題)


給實驗室同學搭建的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訓練平台,歡迎各位師傅來玩哇,后期會放很多基礎,入門以及有意思的原創題目上去。

http://biuctf.cc/

快快成長

 

參考鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM