首先我们放出GZCTF的官方安装教程我打开他比较玄学有的时候不科学上网上去很诡异,GZCTF用的是postgresql数据库不能用mysql,postgresql的安装和教程网上很多就不赘述了快速上手 - GZ::CTF Docs (gzti.me)icon-default.png?t=O83Ahttps://docs.ctf.gzti.me/quick-start

一.安装docker和docker-compose

1.首先设置docker的apt储存库

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

2.安装docker以及配件

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3确定docker安装成功,我觉得docker --version如果能出来的话应该也行嗯,~

docker run hello-world


 二.安装docker-compose
1.通过链接github下载(如果不搞魔法可能要做好十多kb慢慢下的心理准备)

sudo curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

 添加权限

sudo chmod +x /usr/local/bin/docker-compose

确定安装成功

docker-compose --version #查看返回值

docker-compose version 1.16.1, build 1719ceb #如

2.pip下载

sudo pip install docker-compose

3.离线下载(不想面对十几kb的惊人速度就用这个方法)

进入链接:下载地址 下载该文件步骤如下

(1)

d716b605128a4a25bc05c8e3b866a064.png

(2)进入后找下滑找该文件并下载

72b5e0c3c4fe4e14a256d5909191cbad.png

(3)如果是服务器就远程传输本文件到服务器上执行下面命令

mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose #离线安装
chmod +x /usr/local/bin/docker-compose    #赋权
docker-compose --version    #确定安装成功

注意这个version的返回值是有用的

三.GZCTF的安装

1.将以下内容保存为 appsettings.json 文件,并替换为你的初始化参数,具体配置说明请参考 appsetting.json配置详解

因为要删除注释不然会报错所以有两个版本,解释版对着不解释版看,解释版会出错

{
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<String1>"
      //<String1>换成数据库密码,随机密码且长度足够
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
    //邮箱配置
  "EmailConfig": {
    "SendMailAddress": "Admin@xxx.com",         // 填入邮箱
    "UserName": "ctf_noreply",                          // 发件人名称
    "Password": "UWPTINWMFPQVMPAH",                     // 邮箱密码,部分服务商需要填入授权码
    "Smtp": {
      "Host": "smtp.163.com",                           // 此处为163邮箱服务器,具体自定
      "Port": 465
    }
  },
  "XorKey": "<String2>",                                        // 自定XorKey
  "ContainerProvider": {
    "Type": "Docker",
    "PublicEntry": "XXX.XXX.XXX.XXX",                     // 域名或IP配置,用于容器生成,域名不带http/https
    "DockerConfig": {
      "SwarmMode": false,
      "Uri": ""                                                         // 本地配置Docker因此此处置空
    } 
  },      
  "RequestLogging": false,
  "DisableRateLimit": false,
  "RegistryConfig": {
    "UserName": "", 
    "Password": "",
    "ServerAddress": "" 
  },  

    //谷歌验证码配置
  "GoogleRecaptcha": {
    "VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
    "Sitekey": "",
    "Secretkey": "",
    "RecaptchaThreshold": "0.5" 
  } 
}   
{
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<Your POSTGRES_PASSWORD>"
  },
  "EmailConfig": {
    "SenderAddress": "",
    "SenderName": "",
    "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"
    }
  },
  "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": 7,
    "ForwardLimit": 1,
    "TrustedNetworks": ["192.168.12.0/8"]
  }
}

要去修改pg_hub.conf然后就可以交互数据库了


2.将以下内容保存为 docker-compose.yml 文件,并替换为你的初始化参数

services:
  gzctf:
    image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:develop
    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"
version: '2.22'    #这里就是刚刚version返回值有用的地方
services:
  gzctf:
    image: gztime/gzctf:latest
    restart: always
    environment:
      - "GZCTF_ADMIN_PASSWORD=<String3>" # <String3>换成管理员账户密码,账号为Admin
    ports:
      - "80:80" # 对外端口号,前为外部端口。
    networks:
      default:
    volumes:
      - "./data/files:/app/uploads"
      - "./appsettings.json:/app/appsettings.json:ro"
      - "./logs:/app/log"
      - "./data/keys:/root/.aspnet/DataProtection-Keys"
      # - "./k8sconfig.yaml:/app/k8sconfig.yaml:ro"
      - "/var/run/docker.sock:/var/run/docker.sock"
    depends_on:
      - db

  db:
    image: postgres:alpine
    restart: always
    environment:
      - "POSTGRES_PASSWORD=<String1>" # 数据库密码,务必要和appsettings.json中的配置一致
    networks:
      default:
    volumes:
      - "./data/db:/var/lib/postgresql/data"

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.12.0/24

运行 docker compose up -d 来启动 GZCTF,之后你可以通过浏览器访问 GZCTF 了。

到此GZCTF的内容就差不多弄完了,然后就可以通过你的http:\\ip:80进入了,大概这个画面

c9b6665ad2e34dd5a54a01c26e003189.png

四.赛题的安装

一前言

        由于我们安装赛题时要使用dockerfile进行image的构建,但是docker bulid 使用时需要docker bulidkit的环境但是,docker在2.23版本就将bulidkit遗弃了2.24版本就删除了,docker官网上面也写了bulidkit怎么用但是他没有告诉你2.24版本就删除了,还要找他另一个版本更新删除内容的公告才有,就很emmmmm,所以你走bulidkit方向也不是不行,但是我没走通....就用了docker desktop        

二.安装docker desktop

1.对于非 Gnome 桌面环境,必须安装:gnome-terminal

apt install gnome-terminal

2.下载软件包下载地址

3.使用apt安装软件包(服务器要远程传本文件上去)

apt-get update
apt-get install ./docker-desktop-<version>-<arch>.deb 
#要是不想打那么多可以只打前面的apt-get install ./docker-desktop然后tab一下

4.启动服务

systemctl --user start docker-desktop
systemctl --user enable docker-desktop

三.下载赛题

1下载赛题

GZCTF自己整理的赛题

2.创建镜像

cd XXX/one-number-sql/build #我用one-number-sql举例

找到dockerfile文件704c25047c9d4468b85b650cb9f8b126.png

使用命令

docker bulid -t <自取镜像名字> .(这个点是指的当前路径下他是有用的!!!!)

等他跑完不出报错使用docker images 查看是否创建成功(我确实取名叫sql已经有了)

docker images
#REPOSITORY                               TAG          IMAGE ID       CREATED        SIZE
#sql                                      latest       6d0810f0f24b   4 hours ago    68.1MB
#nc-test                                  latest       534eb8da972f   5 hours ago    8.08MB
#<none>                                   <none>       ec5e49bd5081   6 days ago     4.21MB
#gztime/gzctf                             latest       d3a5c260e275   8 days ago     349MB
#postgres                                 alpine       a08278fcaefe   3 weeks ago    239MB
#ghcr.io/w4terdr0p/w4terctf-2023/php      alpine-7.4   bc146bfe514b   2 months ago   81.2MB
#ghcr.io/w4terdr0p/w4terctf-2023/php      latest       57be3fb1fff1   2 months ago   81.2MB
#ghcr.io/w4terdr0p/w4terctf-2023/xinetd   alpine       4479d282e9e0   2 months ago   8.08MB
#hello-world                              latest       9c7a54a9a43c   5 months ago   13.3kB

3.测试镜像创建成功以及GZCTF可以运行

(1)创建比赛

e2d78c6e48ff419d9d331e3628e91c13.png

(2)创建赛题

05db7f0f8658485a8862d9d3954f08e0.png

(3)测试镜像

e6e03c1101934f778c4f913f4375fdae.png

(4)大功告成

78529ed7603a474f914c05d1ea09a53d.png

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐