当前位置:   article > 正文

记一次GZCTF作为校赛平台以及实现动态flag的部署全过程_gzctf部署指南

gzctf部署指南

        GZCTF作为一个新上的开源ctf平台,对比以前的众多平台有着美观易于管理的优点,但是今年校赛平台准备启这个平台的时候,除了官方的文档,搜不到几个中文的教程,所以在这记一下自己部署平台的全过程,也算是个成功部署的教程吧,那么下面咱们开始

        这次的环境部署在Ubuntu上,版本是22.04,安装过程不再赘述,由于已经成功部署过一遍,所以不做远程shell链接,直接虚拟机图形化管理安装了

        没有科学上网的同学们安装完成第一步就是换源,也不再赘述,具体教程可以参考别的帖子

首先安装好必备的工具:

Docker:

sudo apt install docker.io docker-compose

vim:

sudo apt install vim

然后验证安装

        回显版本号即为安装正常

        我这里使用的官方快速部署,参考文档:快速上手,使用docker-compose来快速部署(绝对不是因为懒),有其他需求的可以参考官方文档

在根目录下创建GZCTF目录,进入目录需要创建两个文件

  1. sudo touch appsettings.json
  2. sudo touch docker-compose.yml
  3. ls

然后编辑appsettings.josn

sudo vim appsettings.josn
  1. {
  2. "AllowedHosts": "*",
  3. "ConnectionStrings": {
  4. "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<Your POSTGRES_PASSWORD>"
  5. },
  6. "EmailConfig": {
  7. "SendMailAddress": "a@a.com",
  8. "UserName": "",
  9. "Password": "",
  10. "Smtp": {
  11. "Host": "localhost",
  12. "Port": 587
  13. }
  14. },
  15. "XorKey": "<Your XOR_KEY>",
  16. "ContainerProvider": {
  17. "Type": "Docker", // or "Kubernetes"
  18. "PortMappingType": "Default", // or "PlatformProxy"
  19. "EnableTrafficCapture": false,
  20. "PublicEntry": "<Your PUBLIC_ENTRY>", // or "xxx.xxx.xxx.xxx"
  21. // optional
  22. "DockerConfig": {
  23. "SwarmMode": false,
  24. "Uri": "unix:///var/run/docker.sock"
  25. }
  26. },
  27. "RequestLogging": false,
  28. "DisableRateLimit": true,
  29. "RegistryConfig": {
  30. "UserName": "",
  31. "Password": "",
  32. "ServerAddress": ""
  33. },
  34. "CaptchaConfig": {
  35. "Provider": "None", // or "CloudflareTurnstile" or "GoogleRecaptcha"
  36. "SiteKey": "<Your SITE_KEY>",
  37. "SecretKey": "<Your SECRET_KEY>",
  38. // optional
  39. "GoogleRecaptcha": {
  40. "VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
  41. "RecaptchaThreshold": "0.5"
  42. }
  43. },
  44. "ForwardedOptions": {
  45. "ForwardedHeaders": 5,
  46. "ForwardLimit": 1,
  47. "TrustedNetworks": ["192.168.12.0/8"]
  48. }
  49. }

这个文件中必须修改的参数如下:

POSTGRES_PASSWORD: 数据库密码

XOR_KEY: 用于加密比赛私钥的随机字符串

PUBLIC_ENTRY: 外部访问地址,可以是 IP 或域名

TrustedNetworks:修改成自己的对应ip,防止网段冲突问题

然后编辑docker-compose.yml

sudo vim docker-compose.yml
  1. version: "3.0"
  2. services:
  3. gzctf:
  4. image: gztime/gzctf:latest
  5. restart: always
  6. environment:
  7. - "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>"
  8. # choose your backend language `en_US` / `zh_CN` / `ja_JP`
  9. - "LC_ALL=zh_CN.UTF-8"
  10. ports:
  11. - "80:8080"
  12. volumes:
  13. - "./data/files:/app/files"
  14. - "./appsettings.json:/app/appsettings.json:ro"
  15. # - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment
  16. - "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deployment
  17. depends_on:
  18. - db
  19. db:
  20. image: postgres:alpine
  21. restart: always
  22. environment:
  23. - "POSTGRES_PASSWORD=<Your POSTGRES_PASSWORD>"
  24. volumes:
  25. - "./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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/559857
推荐阅读
相关标签
  

闽ICP备14008679号