ctfd汉化

导入文件到ctfd目录下即可

项目地址:GitHub - Gu-f/CTFd_chinese_CN: 对CTFd平台各版本的汉化记录。key:中文、汉化、翻译、chinese、CN、CTFd

汉化版已推送到hub docker中。

docker pull liangchenga/ctfd-341_ctfd:latest

支持动态flag的ctfd

直接用别人做好的虚拟机搭建,自己搭建起来有点麻烦,这里会记录一些使用过程中的问题及使用心得。

  • 这里也有一个自动搭建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访问,返回如下界面:

image-20230330172556248

一步一步设置完,在样式处,banner如果尺寸太大有点问题,设置完成后,就可以使用了。

动态靶场配置,点击Whale插件

没有域名Http Domain Suffix可以不填写

Direct IP Address 填写虚拟机的ip地址。

image-20230330172657763

创建题目

选择dynamic_docker

image-20230330172713163

写题目名、分类、描述等内容,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(静态分值)。

image-20230330172756005

题目创建完成后,测试下。

访问题目环境

测试下提交flag。

image-20230330172816394

至此,环境搭建完成。

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

image.png

往下拉Frps config template [generated]中设置subdomain_host为公网ip或域名。

image.png

如上设置就可以了。


删除容器,重新拉取镜像

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

CTFd&ctfd-whale动态靶机搭建与维护 · 语雀

GitHub - CTFTraining/CTFTraining: CTF Training 经典赛题复现环境

BUUCTF 题目贡献指南 – glzjin

https://www.lewiserii.top/%E7%AB%9E%E8%B5%9B/ctf%E5%B9%B3%E5%8F%B0%E6%90%AD%E5%BB%BA%E5%92%8C%E5%87%BA%E9%A2%98%E6%8C%87%E5%8D%97.html

https://www.r00team.cc/wiki/ctf_deploy.html#web%E7%B1%BB

GitHub - frankli0324/ctfd-whale: A plugin for CTFd which allow your users to deploy standalone instances for challenges.