GZCTF在ubuntu系统中的安装之单docker
关于GZCTF单docker搭建
首先我们放出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"
}
}
{
"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进入了,大概这个画面
四.赛题的安装
一前言
由于我们安装赛题时要使用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)大功告成
更多推荐
所有评论(0)