首先我们放出GZCTF的官方安装教程我打开他比较玄学有的时候不科学上网上去很诡异,GZCTF用的是postgresql数据库不能用mysql,postgresql的安装和教程网上很多就不赘述了快速上手 - GZ::CTF Docs (gzti.me)https://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)
(2)进入后找下滑找该文件并下载
(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进入了,大概这个画面
四.赛题的安装
一前言
由于我们安装赛题时要使用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下载赛题
2.创建镜像
cd XXX/one-number-sql/build #我用one-number-sql举例
找到dockerfile文件
使用命令
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)创建比赛
(2)创建赛题
(3)测试镜像
(4)大功告成