草庐IT

本科毕设CTF平台-MarsCTF

b1ackc4t 2023-03-28 原文

MarsCTF

Vue+Springboot开发的CTF学习平台,提供动态靶机、学习模块、writeup模块等等CTF平台的核心功能。提供docker版本。

演示视频:https://www.bilibili.com/video/BV1eA4y1o73C

Tips: 前后端分离项目,本仓库为后端,前端仓库在https://github.com/b1ackc4t/MarsCTF-client

快速启动

初始管理员用户名/密码:admin/123456

下载 https://github.com/b1ackc4t/MarsCTF/releases 里已经打包好的docker包,解压后执行以下命令:

chmod -R 755 ./marsctf-docker  # 赋予足够权限
cd ./marsctf-docker
docker-compose up -d

然后访问 http://127.0.0.1:7991 即可,使用其他ip无法访问后端服务。

如要修改访问ip,请修改/marsctf-docker/nginx/html/config.jsonBASE_URL_PROD,然后重启服务即可

动态靶机支持

单机部署

配置很简单,首先开启docker API(需要和平台在同一台机器上)

在后台平台配置处配置红框内的参数保存即可,容器返回IP即云服务器IP,docker API的ip推荐使用云服务器的内网ip或者docker0网卡IP

多机部署

  • 针对希望把docker API服务器放在其他机器上和平台分开的情况。通常关闭即可

原理:使用frp将docker API服务器上开启的容器端口映射到平台服务器上,端口号不改。如:192.168.48.139:34567 -> 106.54.134.134:34567

docker API服务器上开启frpc,并开启frpc API

平台服务器上开启frps

随后根据配置填写对应参数即可

配置TLS

  • 针对内网不安全的情况,增加证书认证。通常关闭即可。

对于debian系的linux,已经提供了便携的脚本配置

首先修改./marsctf-docker/docker-tls/gen_key.sh里的IP、密码以及其他元数据信息

# -------------------------------------------------------------
# 自动创建 Docker TLS 证书
# -------------------------------------------------------------
# 以下是配置信息
# --[BEGIN]------------------------------
IP="192.168.48.202"	# 改为云服务器IP
PASSWORD="b1ackc4tyyds"	# 用于docker-api通信的密钥
# 以下可改可不改
COUNTRY="CN"
STATE="HUBEI"
CITY="WUHAN"
ORGANIZATION="XXSSHH"
ORGANIZATIONAL_UNIT="Dev"
EMAIL="xxxxxxxxx@163.com"

改后保存,执行

cd ./marsctf-docker/docker-tls
chmod +x ./gen_key.sh
chmod +x ./startup.sh
./startup.sh

脚本会自动完成开启docker-api、产生tls密钥、配置tls密钥一系列步骤。


对于其他linux或者以上脚本失效的情况,则自行配置打开docker api,并配置tls证书,将生成的客户端ca.pem、ca-key.pem、cert.pem、key.pem(名称固定,不然识别不到)复制到./marsctf-docker/main/CertKey,然后重启docker服务即可

功能预览

  1. 学习模块

    • 提供体系化学习资料,并和挑战中的CTF题目相关联

  2. 挑战模块

    • 提供CTF题目,支持动态靶机
    • 题目类型、标签均可扩展

  3. writeup模块

    • 分享解题思路的平台

  4. 公告、排行榜等其他功能

docker赛题编写

编写模式参考https://github.com/CTFTraining/CTFTraining

动态flag通过"FLAG"环境变量注入

声明

此项目为本人在湖北大学的本科毕业设计,湖北大学已申请了软件著作权

有关本科毕设CTF平台-MarsCTF的更多相关文章

  1. 基于Python的人脸识别课堂系统(毕设)——附录上 - 2

    本文章承接《基于Python的人脸识别课堂考勤系统(毕设)》,填坑上篇文章遗留的代码部分。因为项目分的模块比较多,再加上本人能力有限,所以代码过于臃肿还存在许多优化的地方。同样本篇文章也仅适用于小白,零基础人群。PS:每个文件之中代码都已经区分开来,可以对照左侧目录部分实现快速预览!    由于代码过于多我这里分成上,下两个部分来发布吧!一、主文件importosimportsysimportrandomimportpymysqlimportcv2importnumpyasnpfrommathimportpifrommatplotlibimportpyplotaspltfromPILimpor

  2. NFT交易平台开发 创建NFT数字藏品平台 - 2

    为什么需要NFT市场?NFTMarketplace允许用户购买、出售、交易、查看或创建自己的NFT,就像他们需要一个市场来购买物理或数字世界中的大多数产品一样。几乎每个人都可以进入NFT市场,但要做到这一点,用户必须满足以下要求:一个NFT市场用户账户,允许您在给定平台上购买NFT。你需要一个与区块链兼容的加密钱包来购买NFT。NFTMarketplace非常重要,因为它连接了买卖双方,并为用户提供了多种工具来快速创建自己的NFT。艺术家可以在市场上列出要出售的NFT,买家可以通过投标过程探索市场并购买物品。NFT市场开发过程解释创建NFT市场是一个耗时的过程,需要编程知识和理解。那么搭建NF

  3. Ruby跨平台EOF符号的写法 - 2

    在Ruby中是否有一种平台无关的方式将EOF符号写入字符串。在*nix中,我认为符号是^D,但在Windows中是^Z,这就是我问的原因。 最佳答案 EOF不是一个字符,它是一个状态。终端使用控制字符来表示此状态(C-d)。没有这样的事情是“读一个EOF字符”,写一个也是一样的。如果您正在写入文件,请在完成后将其关闭。看这个mailinglistpost:ItsoundslikeyouarethinkingofEOFasanin-bandbutspecialcharactervaluethatmarkstheendoffile.It

  4. 视频融合技术解决方案,三维全景拼接赋能平台 - 2

    近年来,随着信息化时代的到来,三维全景拼接以视频监控领域为代表的智能硬件公司迅速崛起,随后全国各地在视频监控领域进行了大量的建设。但随着摄像头数量的增加,视频监控画面离散、庞杂、关联性差等诸多问题日渐凸显。如何优化现有视频技术,助力管理者或使用者有效、直观、准确地掌控现场实时动态,成为我国信息化前行路上面临的新课题。视频融合技术平台解决方案北京智汇云舟科技有限公司成立于2012年,专注于创新性的“视频孪生(实时实景数字孪生)”技术研发与应用。公司依托自研三维地理信息引擎(3DGIS),融合建筑信息模型(BIM)、视频监控(Video)、人工智能(AI)及物联网(IOT)等多种技术,并在此基础上

  5. ruby - 如何指定 gem 仅是 JRuby 平台? - 2

    我正在开发一个只适用于JRuby平台的gem。如何在我的.gemspec中指定它? 最佳答案 你可以简单地输入gemspecspec.platform='java'表示它仅适用于JRuby。具体设置平台可以看一下:RubygemSpecificationReference 关于ruby-如何指定gem仅是JRuby平台?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/189366

  6. ruby-on-rails - 选择 Ruby on Rails 作为基于浏览器的在线游戏平台 - 2

    对于类似Travian的在线策略游戏,我有一些(我认为)非常棒的想法。有些内容我还没有想通,还有一些我还不知道的挑战。这是一个相当大的项目,对于(还)不是熟练的Web开发人员的人来说可能太重了。我还是想试一试,但我在选择平台时遇到了麻烦。世界上的“规模”最近被抛得一团糟,我看到RubyonRails因规模不佳而受到抨击,所以我来这里是为了得到一些答案。我喜欢RubyonRails,无论是Ruby还是Rails。我当然不是这方面的专家,但我喜欢使用它。我之前也使用过Python+Django,也使用过PHP(我不喜欢它。)理想情况下,假设每个服务器有7000名玩家,大概每秒要处理大量数据

  7. ruby-on-rails - 有谁知道 Ruby On Rails 的任何跨平台 GUI 日志查看器? - 2

    我厌倦了使用:tail-fdevelopment.log跟踪我的Rails日志。相反,我想要在网格中显示信息并允许我对每个日志消息进行排序、过滤和查看堆栈跟踪的东西。有谁知道用于显示Rails日志的GUI工具。理想情况下,我想要一个独立的应用程序(不是Netbeans或Eclipse中的东西) 最佳答案 Splunk,有一个免费版本,限制为500mb,但具有与完整版本相同的所有功能。 关于ruby-on-rails-有谁知道RubyOnRails的任何跨平台GUI日志查看器?,我们在St

  8. ruby - bundle 安装错误 - 你的 bundle 只支持平台 [] 但你的本地平台是 ["ruby", "x86_64-linux"] - 2

    在执行bundle安装时出现此错误;谷歌似乎是一个常见问题,但我似乎找不到解决方法(似乎是关于Gemfile.lock的建议,但我将该文件移到了另一个目录)#bundleinstallYourbundleonlysupportsplatforms[]butyourlocalplatformsare["ruby","x86_64-linux"],andthere'snocompatiblematchbetweenthosetwolists.这是我的Gemfile,目录中没有Gemfile.lock。[root@ip-172-30-4-16rails]#gem-v2.6.11[root@i

  9. ruby - Ruby 是编写平台独立桌面应用程序的好选择吗? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。ImprovethisquestionRuby是编写(可能和部分)平台独立桌面应用程序的好选择吗?是否有任何支持的库可以为windows、Linux、Mac操作系统编写代码我知道Java可以编写桌面应用程序,那么Ruby呢?

  10. 腾讯云区块链服务平台(TBaaS)长安链体验网络公测试用感受 - 2

    前阵InfoQ社区看到腾讯云腾讯云区块链服务平台(TBaaS)长安链体验活动,一顿操作猛如虎报了个名,体验完用一个字概括:强。非要再加几个字的话,总体感受下来装配模式灵活高效,配套工具完整辩解。话不多说开始主题本文目录结构分为区块链分类和TBaaS平台介绍、TBaaS平台上链教程三个部分一、区块链分类:大体上来说,区块链可分为公链,联盟链,私有链三种:公有链(PublicBlockchain)公有链是指任何人都能参与的区块链。公有链是去中心化程度最高的区块链,不受机构控制,整个账本对所有人公开透明。任何人都能在公有链上查询交易、发送交易、参与记账。加入公有链不需要任何人授权,可以自由加入或者离

随机推荐