赞
踩
GZCTF作为一个新上的开源ctf平台,对比以前的众多平台有着美观易于管理的优点,但是今年校赛平台准备启这个平台的时候,除了官方的文档,搜不到几个中文的教程,所以在这记一下自己部署平台的全过程,也算是个成功部署的教程吧,那么下面咱们开始
这次的环境部署在Ubuntu上,版本是22.04,安装过程不再赘述,由于已经成功部署过一遍,所以不做远程shell链接,直接虚拟机图形化管理安装了
没有科学上网的同学们安装完成第一步就是换源,也不再赘述,具体教程可以参考别的帖子
Docker:
sudo apt install docker.io docker-compose
vim:
sudo apt install vim
回显版本号即为安装正常
我这里使用的官方快速部署,参考文档:快速上手,使用docker-compose来快速部署(绝对不是因为懒),有其他需求的可以参考官方文档
在根目录下创建GZCTF目录,进入目录需要创建两个文件
- sudo touch appsettings.json
- sudo touch docker-compose.yml
- ls
然后编辑appsettings.josn
sudo vim appsettings.josn
- {
- "AllowedHosts": "*",
- "ConnectionStrings": {
- "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<Your POSTGRES_PASSWORD>"
- },
- "EmailConfig": {
- "SendMailAddress": "a@a.com",
- "UserName": "",
- "Password": "",
- "Smtp": {
- "Host": "localhost",
- "Port": 587
- }
- },
- "XorKey": "<Your XOR_KEY>",
- "ContainerProvider": {
- "Type": "Docker", // or "Kubernetes"
- "PortMappingType": "Default", // or "PlatformProxy"
- "EnableTrafficCapture": false,
- "PublicEntry": "<Your PUBLIC_ENTRY>", // 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": "<Your SECRET_KEY>",
- // optional
- "GoogleRecaptcha": {
- "VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
- "RecaptchaThreshold": "0.5"
- }
- },
- "ForwardedOptions": {
- "ForwardedHeaders": 5,
- "ForwardLimit": 1,
- "TrustedNetworks": ["192.168.12.0/8"]
- }
- }
这个文件中必须修改的参数如下:
POSTGRES_PASSWORD
: 数据库密码
XOR_KEY
: 用于加密比赛私钥的随机字符串
PUBLIC_ENTRY
: 外部访问地址,可以是 IP 或域名TrustedNetworks:修改成自己的对应ip,防止网段冲突问题
然后编辑docker-compose.yml
sudo vim docker-compose.yml
- version: "3.0"
- services:
- gzctf:
- image: gztime/gzctf:latest
- restart: always
- environment:
- - "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>"
- # 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 deployment
- depends_on:
- - db
-
- db:
- image: postgres:alpine
- restart: always
- environment:
- - "POSTGRES_PASSWORD=<Your POSTGRES_PASSWORD>"
- volumes:
- - "./data/db:/var/lib/postgresql/data"
这个文件中必须修改的参数如下:
GZCTF_ADMIN_PASSWORD
:初始管理员密码,在数据库未初始化时生效,需要在第一次启动时进行设置
POSTGRES_PASSWORD
: 数据库密码
然后直接运行 docker compose up -d
来启动 GZCTF
sudo docker-compose up -d
看到这个界面就是部署完成了
然后查看docker正在运行的实例
sudo docker ps
然后访问ip端口
到这GZ平台的快速部署就算是告一段落了,接下来简单讲解一下web题的动态flag实现,为什么没有pwn题?因为我也不会做hahahah
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。