GZCTF搭建
GZCTF搭建
官方文档
一个比较详细的安装教程
默认先安装docker、docker-compose
建议以下内容用root账户完成
本文没放图片,只要文字,可以先自己尝试一下
下载
先下载GZCTF
https://github.com/GZTimeWalker/GZCTF
添加配置文件
添加两个配置文件放在GZCTF文件夹里
修改里面内容,密码、邮箱等等
其中密码要增加复杂度,简单的密码会导致配置失败
例如登录默认管理员账号的时候登录不上
配置内容如下
appsettings.json
1 | { |
docker-compose.yml
1 | version: '3.0' |
运行
在GZCTF目录下
需要在有docker-compose.yml文件的目录下才可以运行这个命令
运行前需要确保docker已经启动了
这里赠送两条命令(wsl不能使用systemctl命令,具体怎么替换就不知道了,因为直接放弃了用wsl使用这玩意)
启动docker
1 | sudo systemctl start docker |
设置开机启动docker
1 | sudo systemctl enable docker |
**启动
(聪明的人会自己补齐那两个字)
1 | docker-compose up -d //加-d会后台运行,不加-d前台运行,谁试谁知道 |
1 | docker ps //查看一下运行的docker容器 |
这里遇到了连接超时问题,有需要的可以看下面的解决办法
docker拉取GZCTF时连接超时
第一种解决办法
可以尝试换docker镜像
1 | docker info //查看镜像信息 |
可以在
在/etc/docker/daemon.json里修改配置
1 | { |
修改完后
重新加载docker的配置文件
1 | sudo systemctl daemon-reload |
重启docker
1 | sudo systemctl restart docker |
docker info 查看一下配置有没有修改好
有时候改完镜像也不会出现拉去失败的情况
可以拼运气,多试几次,我反正试了半天没成功
所有来了个下面的远水解近火
第二种解决方式
服务器拉不下来镜像
找可以拉下来镜像的
可以是在虚拟机里,或者其他可以的各种
问题主要出在dockerhub访问不到
自己想办法喽
打包已经下载完的镜像
1 | docker save 你要打包的镜像名字或者id > 自己起个名字.tar |
放到你需要的地方,例如我需要放在我的服务器上,找一个位置就可,运行完可以删掉tar文件
1 | docker load < 自己起个名字.tar |
这个时候去查看自己的docker镜像,就会发现有这个东西
再删去压缩包没法新对下载的镜像有影响
省空间了
但是麻烦了点
解完完问题后
不出意外会有这俩容器运行
1 | c69c23555ad0 gztime/gzctf:latest "dotnet CTFServer.dll" 2 days ago Up 2 days 0.0.0.0:80->80/tcp, :::80->80/tcp gzctf-develop_gzctf_1 |
可以通过gzctf的id来查看它的运行日志,确定有没有连接到数据库
1 | docker logs c69c23555ad0 |
访问
访问一下确保自己能访问
访问不了可以看看端口开没开,或者有没有被占用
1 | netstat -tanlp |
可以kill掉占用端口的进程
或者给占用端口的进程换个端口
看个人情况
这个时候就要百度了
到这基本就结束了,可以让它一直挂载在后台运行
接下里来是测试平台和出题
测试平台
根据自己填写的ip和端口打开平台
登录管理员账号
测试一下常用的项目等
重点是web出题和pwn出题
re、misc和密码只需要flag和附件即可,比较简单
动态附件
动态附件没什么坑
只要注意flag会把文件名的后缀也加上去
在上传文件的时候把后缀名删掉
在下发的同意文件名里再加上就可
例如一个
flag{Th1s_t3st_fl@g}.txt文件
上传的时候上传flag{Th1s_t3st_fl@g}文件
删掉后缀
下发的统一文件名改为
题目.txt
即可
动态容器
注意俩问题
一个服务端口
端口
平台设置的和dockerfile文件写的暴露端口要一致
服务器也要开放这个端口
不然访问不了
可恨的是腾讯云的端口不仅要在管理面板开,在腾讯云的服务器控制面板也要开
动态flag
注意GZCTF平台的动态flag的环境变量是
1 | $GZCTF_FLAG |
dockerfile
另外要会dockerfile的写法
还不会目前正在偷学长写好的现成的
写完所有的题目和配置文件
(如果写了docker-compose配置文件的话可以docker-compose启动,关闭命令是吧up 换成down)
没有的话手动一步步来,其实也就一步
在dockerfile在的目录里
1 | docker build -t 名字 . |
eg:
1 | docker build -t qlnuctf/web |
.是在当前目录
它会在本目录寻找dockerfile文件,按里面的配置来打包这个镜像
打包完了可以查看自己已有的镜像
1 | docker images |
如果有qlnuctf/web这个镜像就说明打包成功了、
配置到平台上
在给出的容器镜像里填上你自己打包的镜像的名字,服务端口是dockerfile配置的端口
qlnuctf/web