前言
我用手里的Ubuntu虛擬機搭建的,大家根據自己的實際情況來吧
安裝及部署
首先,你的虛擬機需要有Docker和Docker-Compose,前者可以看我之前的文章,另外一個可以輸入下面的命令安裝,注意先獲取管理員權限,開個代理防止連接不上
apt install docker.io docker-compose
使用下列命令檢查是否安裝成功
docker-compose -v
然后我們創建個GZCTF文件夾用來存放文件
使用touch命令分別創建appsettings.json和docker-compose.yml文件
內容大家可以把我下面這段復制粘貼(把PublicEntry那段的ip改成自己的虛擬機ip)
appsettings.json
{"AllowedHosts": "*","ConnectionStrings": {"Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=Admin123."},"EmailConfig": {"SendMailAddress": "a@a.com","UserName": "","Password": "","Smtp": {"Host": "localhost","Port": 587}},"XorKey": "Admin123.","ContainerProvider": {"Type": "Docker", // or "Kubernetes""PortMappingType": "Default", // or "PlatformProxy""EnableTrafficCapture": false,"PublicEntry": "192.168.221.128", // or "xxx.xxx.xxx.xxx"// optional"DockerConfig": {"SwarmMode": false,"Uri": "unix:///var/run/docker.sock"}},"RequestLogging": false,"DisableRateLimit": true,"RegistryConfig": {"UserName": "","Password": "","ServerAddress": ""},"CaptchaConfig": {"Provider": "None", // or "CloudflareTurnstile" or "GoogleRecaptcha""SiteKey": "<Your SITE_KEY>","SecretKey": "admin",// optional"GoogleRecaptcha": {"VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify","RecaptchaThreshold": "0.5"}},"ForwardedOptions": {"ForwardedHeaders": 5,"ForwardLimit": 1,"TrustedNetworks": ["192.168.12.0/8"]}
}
?docker-compose.yml
version: "3.0"
services:gzctf:image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:developrestart: alwaysenvironment:- "GZCTF_ADMIN_PASSWORD=Admin123."# choose your backend language `en_US` / `zh_CN` / `ja_JP`- "LC_ALL=zh_CN.UTF-8"ports:- "80:8080"volumes:- "./data/files:/app/files"- "./appsettings.json:/app/appsettings.json:ro"# - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment- "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deploymentdepends_on:- dbdb:image: postgres:alpinerestart: alwaysenvironment:- "POSTGRES_PASSWORD=Admin123."volumes:- "./data/db:/var/lib/postgresql/data"
接下來我們在這個文件夾里面打開控制臺,輸入下面的命令運行,他會自動下載所需的資源然后運行
docker-compose up -d
等待加載完畢
我們直接訪問虛擬機ip即可
接下來我們點擊左下角登錄,用戶名是Admin,密碼是Admin123.(之前那兩個文件里面寫的密碼)
登陸成功后,我們可以點擊左側小扳手,然后創建比賽了
之后大家根據自己的需要進行設置吧
鏡像的構建
我們通過docker進行構建自己的題目,需要注意的是,比如我用python的flask框架編寫的文件,如果我們需要用到動態的Flag,可以引入os模塊,之后運行這個鏡像的時候,GZCTF平臺會自動創建GZCTF_Flag這個環境變量,我們可以用下面的命令獲取動態的flag
flag = os.environ.get("GZCTF_FLAG")
之后,大家根據自己的題目來就好,接下來我們講關于構建和上傳
如果需要上傳到官方的DockerHub上,我們先去創建一個賬號
官方鏈接:DockerHub
然后,我們創建一個庫(一個鏡像創建一個庫吧)
比如我創建了一個賬號,名字叫1234,創建了一個倉庫叫4567
首先要登陸到自己的賬戶
docker login
大家在構建鏡像的時候,用下面的命令構建(名字/倉庫)
docker build -t 1234/5678 -f Dockerfile .
之后,直接上傳到倉庫
docker push 1234/5678
然后大家就能在自己的倉庫里面看見了
鏡像的獲取
創建個動態容器,然后編輯flag
大家看說明就明白了flag怎么設置,保存然后回來,我們填寫容器的鏈接
比如我們上傳的是DockerHub上的,需要填寫(名字/倉庫),如果打標簽了還需要加個(:標簽)
注意端口號,按照你的鏡像設置來
設置之后,我們就可以正常去使用了
總結
如果安裝有問題的話,就重裝一下吧,這里給大家寫上幾條常用的代碼
docker rmi $(docker images -q) #刪除所有鏡像
docker stop $(docker ps -q) #停止所有鏡像
docker rm $(docker ps -a -q) #刪除所有鏡像(不管是否停止)docker-compose up -d #運行
docker-compose down #停止docker logs gzctf_gzctf_1 #查看日志