GZ::CTF 开发日记

GZ::CTF 是一个基于 ASP.NET Core 开发的开源 CTF 比赛平台

旧版开发日志,far fa-hand-point-right
  • 9 Mar, 2022
    一年过去了,也学到了不少的技术。想起来当初写的时候还是在深圳,现在已经是在广州呆了大半年了。当时搞 SignalR 捣鼓了好多天,倒也学到了新东西,如今有了些许时间,也终于下定决心准备开始和几位朋友一起设计,把这个平台搭建起来了。

    相关技术还是很有挑战性的,去年十月写的 Puzzle Server 也算是为这个项目而做的技术积累和实验,并且这个项目就是基于它而制作的。如今用上了现代化的前端,学过了 SPA 的开发,部署上也多了不少经验,希望能够把这个念叨了许久、想要用于校赛的项目早日制作出来吧。

    今天一下午都在和朋友商讨数据库模型的设计,最后得出来了一些结果。数据库模型的基本代码也已经构建完毕,后续进行检查和差错后,就准备开始设计 API 了。

  • 13 Mar, 2022
    数据库模型也进行了一些更改,最后决定借鉴 hackthebox 的做法,每个用户可以加入多个 team,而后同一时刻只能 active 一个队伍。同时队伍采用邀请制,邀请者需要是队伍的创建者,且每个人最多创建一个队伍。这样解决了“以什么队伍”参赛的问题,而后需要考虑但是没想好解决方案的是:如何避免在参赛中更换队伍,或者以多重身份参赛导致多次提交的问题。

    API 设计也初具规模,简单分为了以下几个部分:

    • 账号相关 API
      账号注册、登录、登出、重置密码、更改邮箱、找回邮箱等功能,还有头像上传,个人信息更改。由于个人头像和队伍头像作为特殊的文件附件,采用了特定的接口以保证文件的唯一性,即同一个主体只能同时拥有一个头像。此功能交由 assets 仓库部分实现。
    • 文件相关 API
      主要提供了文件的获取、下载,以及管理员对于文件的上传接口。
    • 管理相关 API
      获取全部用户、删除或更改某个用户的信息、获取系统日志的接口。
    • 队伍相关 API
      创建队伍、更改信息、邀请和加入队伍以及退出和删除队伍的接口。
    • 编辑相关 API
      提供了公告、题目、题目公告、赛事的增删改查的 API。
    • 比赛相关 API
      提供了获取比赛信息、当前数据、以及比赛队伍的 flag 提交、容器下发等比赛 API。