GZCTF在ubuntu系统中的安装之单docker

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

理论上来说应该要把String1换成自己的postgresql数据库的账户密码但是我不知道为啥我的用String1就可以运行我也懒得改了,但是我觉得为了安全起见还是改的好,或许那天懂了我也会改

补一下我朋友试出来,给我说的是postgresql自己的配置文件里面有个选择密码加密方式,要改成md5加密(好像是md5)反正要改,改完之后就可以和appsettings.jons文件匹配上了,就是这样


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

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

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值