前言
我用手里的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 #查看日志