ctfd汉化
导入文件到ctfd目录下即可
项目地址:GitHub - Gu-f/CTFd_chinese_CN: 对CTFd平台各版本的汉化记录。key:中文、汉化、翻译、chinese、CN、CTFd
汉化版已推送到hub docker中。
docker pull liangchenga/ctfd-341_ctfd:latest
支持动态flag的ctfd
- 大佬已经搭建好的vmware版本:VMware虚拟机版本
直接用别人做好的虚拟机搭建,自己搭建起来有点麻烦,这里会记录一些使用过程中的问题及使用心得。
- 这里也有一个自动搭建ctfd的脚本,用到的是nip.io的域名。
项目地址:GitHub - pwnthebox/ctfd-auto-deploy
sh <(curl -s https://raw.githubusercontent.com/pwnthebox/ctfd-auto-deploy/master/install.sh)
需要手动输入的值得
Http Domain Suffix
:域名/ip
External Http Port
: 靶机http映射端口
(这里不能写80,因为80给了ctfd)
Direct Minimum/Maximum Port
: 靶机端口开放范围
- 通过这篇文章搭建,简单易懂。2022.12.31
https://mp.weixin.qq.com/s/oMI9h_hBc373poVsR2CiVw
项目地址:
GitHub - Un1kTeam/CTFd: CTFs as you need them
此项目版本是3.3.0,可以进行汉化,同时也包括了frp、ctfd-whale @ 138b042,ctf-whale单独下载安装。
ctfd环境测试
打开浏览器,输入http://127.0.0.1:9124访问,返回如下界面:
一步一步设置完,在样式处,banner如果尺寸太大有点问题,设置完成后,就可以使用了。
动态靶场配置,点击Whale插件
没有域名Http Domain Suffix可以不填写
Direct IP Address 填写虚拟机的ip地址。
创建题目
选择dynamic_docker
写题目名、分类、描述等内容,docker image填写docker镜像的地址,Frp Redirect Type换成Direct,Frp Redirect Port设置成docker容器的内部端口,通常dockerfile中指定。
题目的分值设定,Initial Value是初始分值,Decay Limit衰减次数,一道题被两次解答后,开始使用Minimum Value中设置的分值,Score Type设置成Dynamic Score(动态分值),如果把Decay Limit衰减次数设置成0不进行最小分值设定,那么Score Type只能换成Static Score(静态分值)。
题目创建完成后,测试下。
访问题目环境
测试下提交flag。
至此,环境搭建完成。
dockerfile动态flag生成
CMD ["/bin/sh", "-c", "docker-php-entrypoint"]
echo $FLAG > /flag && export FLAG=not_flag && FLAG=not_flag
ctfd页面管理设置
- 修改首页
<style>
body {
# 替换首页背景图片
background-image: url("/files/f28557e77fc748c85633ae868e2f0742/background.png");
background-size:cover;
}
</div>
</main>
<footer class="footer">
<div class="container text-center">
<a href="https://ctfd.io" class="text-secondary">
<small class="text-muted"></small>
</a>
</div>
</footer>
<script defer src="/themes/core/static/js/vendor.bundle.min.js?d=59b78ea4"></script>
<script defer src="/themes/core/static/js/core.min.js?d=59b78ea4"></script>
<script defer src="/themes/core/static/js/helpers.min.js?d=59b78ea4"></script>
<script defer src="/themes/core/static/js/pages/main.min.js?d=59b78ea4"></script>
</body>
</html>
</style>
ctfd平台映射到外网
需要设置如下地方
1、在互联网出口的路由器上映射平台端口(9124) 2、在互联网出口的路由器上映射环境端口(28000-28200) 3、配置whale
往下拉Frps config template [generated]中设置subdomain_host为公网ip或域名。
如上设置就可以了。
删除容器,重新拉取镜像
docker system prune --volumes
Read-only file system解决
想进 ctfd 的 docker 换个主题啥的,结果给我说 Read-only file system
感觉是 docker-compose.yml 的第 22 行有个 :ro
,因为它的基础镜像是没有这个 Read-only的,把这个去掉就行了🤦♂️我给的链接已经去掉了,可以直接用,这里只是记录一下
部分靶场无法访问互联网
需要修改docker-compose.yml文件
容器已启动,如果修改这个地方会报错。
参考:
ctfd-whale/install.zh-cn.md at master · frankli0324/ctfd-whale · GitHub
如何正确使用Docker出一道CTF题目 - Von的博客 | Von Blog
GitHub - antlers12/CTFd_sqlilabs
GitHub - CTFTraining/CTFTraining: CTF Training 经典赛题复现环境