GZCTF平台搭建及题目上传

前言

我用手里的Ubuntu虚拟机搭建的,大家根据自己的实际情况来吧


安装及部署

首先,你的虚拟机需要有Docker 和Docker-Compose ,前者可以看我之前的文章,另外一个可以输入下面的命令安装,注意先获取管理员权限,开个代理防止连接不上

bash 复制代码
apt install docker.io docker-compose

使用下列命令检查是否安装成功

bash 复制代码
docker-compose -v

然后我们创建个GZCTF文件夹用来存放文件

使用touch 命令分别创建appsettings.json 和docker-compose.yml文件

内容大家可以把我下面这段复制粘贴(把PublicEntry那段的ip改成自己的虚拟机ip)

appsettings.json

bash 复制代码
{
  "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

bash 复制代码
version: "3.0"
services:
  gzctf:
    image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:develop
    restart: always
    environment:
      - "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 deployment
    depends_on:
      - db

  db:
    image: postgres:alpine
    restart: always
    environment:
      - "POSTGRES_PASSWORD=Admin123."
    volumes:
      - "./data/db:/var/lib/postgresql/data"

接下来我们在这个文件夹里面打开控制台,输入下面的命令运行,他会自动下载所需的资源然后运行

bash 复制代码
docker-compose up -d

等待加载完毕

我们直接访问虚拟机ip即可

接下来我们点击左下角登录,用户名是Admin,密码是Admin123.(之前那两个文件里面写的密码)

登陆成功后,我们可以点击左侧小扳手,然后创建比赛了

之后大家根据自己的需要进行设置吧


镜像的构建

我们通过docker进行构建自己的题目,需要注意的是,比如我用python的flask框架编写的文件,如果我们需要用到动态的Flag,可以引入os模块,之后运行这个镜像的时候,GZCTF平台会自动创建GZCTF_Flag这个环境变量,我们可以用下面的命令获取动态的flag

python 复制代码
flag = os.environ.get("GZCTF_FLAG")

之后,大家根据自己的题目来就好,接下来我们讲关于构建和上传

如果需要上传到官方的DockerHub上,我们先去创建一个账号

官方链接:DockerHub

然后,我们创建一个库(一个镜像创建一个库吧)

比如我创建了一个账号,名字叫1234,创建了一个仓库叫4567

首先要登陆到自己的账户

bash 复制代码
docker login

大家在构建镜像的时候,用下面的命令构建(名字/仓库)

bash 复制代码
docker build -t 1234/5678 -f Dockerfile .

之后,直接上传到仓库

bash 复制代码
docker push 1234/5678

然后大家就能在自己的仓库里面看见了


镜像的获取

创建个动态容器,然后编辑flag

大家看说明就明白了flag怎么设置,保存然后回来,我们填写容器的链接

比如我们上传的是DockerHub上的,需要填写(名字/仓库),如果打标签了还需要加个(:标签)

注意端口号,按照你的镜像设置来

设置之后,我们就可以正常去使用了


总结

如果安装有问题的话,就重装一下吧,这里给大家写上几条常用的代码

bash 复制代码
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 #查看日志
相关推荐
m4Rk_20 分钟前
【论文阅读】Agent记忆机制(114):MemoryTax——当 Agent 能自主搜索历史,专门的记忆系统还划算吗?
论文阅读·人工智能·学习·开源·github
切糕师学AI1 小时前
Kubernetes 探针全解析:启动探针、存活探针与就绪探针(Startup/Liveness/Readiness Probe)
容器·kubernetes·探针·probe
海鸥-w1 小时前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
滴啦嘟啦哒2 小时前
【具身笔记】【原理探究】一、对PI05源码的实践笔记
笔记·python·vla·具身
岁寒良木2 小时前
麒麟 V10 (x86_64) 离线/联网部署 Docker 26.1.4 与 MaxKB v2.10 LTS 实战指南
python·docker·kylin
程序员梅雨2 小时前
【从零开始学习数据仓库 | 第一篇】:维度建模理论
大数据·数据仓库·学习·阿里云·数据分析
keyipatience3 小时前
Git学习(4)Git分布式优势与实战配置全解析
git·学习
览讯冷却4 小时前
冷却塔噪声的健康危害与法规要求的技术梳理
经验分享·笔记·科技·其他·百度·制造·业界资讯
Dory_Youth4 小时前
电脑的搜索功能不能用,一搜就黑屏闪退
运维·笔记
fb_123454 小时前
K8s调度实战全景-Pod调度与资源管控
云原生·容器·kubernetes