GZCTF部署教程
GZCTF-QUICK-DEPLOY
一键化GZCTF部署脚本,如有帮助,还望各位大佬不吝点个star✨:https://github.com/Cyr1s-dev/GZCTF-QUICK-DEPLOY
Docker
更新软件包索引:
1 | sudo apt-get update |
安装 Docker:
1 | sudo apt install docker.io docker-compose |
Vim
1 | sudo apt install vim |
GZCTF
配置
创建文件夹:
1 | mkdir GZCTF |
创建配置文件:
1 | sudo touch appsettings.json |
将以下内容保存为 appsettings.json
文件,并替换为你的初始化参数,具体配置说明请参考 appsettings.json
配置。
1 | { |
这个文件中必须修改的参数如下:
POSTGRES_PASSWORD: 数据库密码
XOR_KEY: 用于加密比赛私钥的随机字符串
PUBLIC_ENTRY: 外部访问地址,可以是 IP 或域名
TrustedNetworks:修改成自己的对应ip,防止网段冲突问题
然后编辑docker-compose.yml
1 | version: "3.0" |
这个文件中必须修改的参数如下:
GZCTF_ADMIN_PASSWORD:初始管理员密码,在数据库未初始化时生效,需要在第一次启动时进行设置
POSTGRES_PASSWORD: 数据库密码
部署&关闭
1 | 部署: |
数据库用户管理
- 安装 PostgreSQL 客户端:
1 | sudo apt install postgresql-client |
- 查看正在运行的容器:
1 | docker ps |
- 查看 PostgreSQL 容器的 IP 地址: 使用以下命令获取
PostgreSQL 容器(
root_db_1
)的 IP 地址:
(查看到 postgres:alpine 镜像的 NAME 是 gzctf_db_1)
1 | docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' gzctf_db_1 |
- 使用正确的 IP 地址连接到 PostgreSQL: 一般获取到的
IP 地址是
172.18.0.2
(实际可能有出入,请替换为实际获取的 IP 地址),然后使用该地址连接到 PostgreSQL 数据库:
1 | psql -h 172.18.0.2 -p 5432 -U postgres -d gzctf |
- 数据库设置管理员:
1 | UPDATE "AspNetUsers" SET "Role"=3 WHERE "UserName"='admin'; |
Docker 模板
获取ctf-docker-template项目
git clone https://github.com/CTF-Archives/ctf-docker-template
Pwn 题目可以通过 https://download-directory.github.io/ 下载22.04版本路径下的文件: https://github.com/CTF-Archives/ctf-docker-template/tree/main/pwn-ubuntu_22.04 (如果是服务器不建议使用,WSL可以复制到共享文件夹里面build)
Pwn 题目部署
在Dockerfile同目录build即可
1 | docker build -t test . |
端口默认是9999,若需要修改,修改./docker/docker-compose.yml
和./config/ctf.xinetd
和./Dockerfile
对应的端口即可