CTF靶场平台搭建--需求分析及设计模式分析

qq_43378962 2021-12-30 15:38:16

CTF靶场平台搭建--需求分析及设计模式分析

项目概述

CTF是在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。

在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛与ACM编程竞赛信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与利用Web渗透、密码、取证、隐写、安全编程等类别。

在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续48小时及以上),同时也比团队之间的分工配合与合作。

需求分析

系统用例图

img

需求描述

  • 动态Flag(格式为: 动态Flag头{md5(用户Key+题目随机)})
  • 注册模式为:无任何注册验证、手机注册验证(互亿无线接口)、邮箱注册验证
  • Web和Pwn题目完全支持Docker分发 做到一人一容器 一人一FLAG
  • 动态分数和静态分数:动态分数题目初始分值为 1000 PT 随着做出的人越多 分值越低,最低分10分,计算公式:1001-1000/(1.01+2.1^(12-解题人数))。静态分值,可在后台题目中自己设定。
  • 前几血加分功能:可以设置 前几名解题的加分功能
  • 邀请码功能:注册时 是否需要邀请码 后台可以随机生成 有时效的邀请码。
  • 平台两种模式运行 日常练习 和 限时竞赛

用例分析

用户登录/注册

注册
用例名称用户注册
执行者未注册用户
基本事件流1.登录平台首页
2.跳转至注册页面
3.选择注册模式:手机注册/邮箱注册
4.填写验证码,填写相关注册信息
5.注册成功,跳转至首页
异常事件流填写信息有误,提示错误
登录
用例名称用户登录
执行者已注册用户
基本事件流1.登录平台首页
2.填写登录密码/手机验证码
3.注册成功,跳转至首页
异常事件流填写信息有误,提示错误

部署靶场

用例名称部署靶场(以dedecms为例子)
执行者管理员
基本事件流1.从pull下来一个集成环境然后启动并挂载到宿主机的一个数据卷上
2.正常安装,配置数据库
3.kill掉该docker并rm掉,FTP连接到宿主机
4.找到安装好dedecms的目录
5.在目录下创建一个新的文件夹并把dedecms的所有文件放到文件夹内
6.编辑Dockerfile文件
7.配置Flag项
8.打包成镜像

获取flag

用例名称获取flag
执行者用户
基本事件流1.选择题目
2.打开题目拉取环境
3.解题获取flag
4.提交flag
5.解题成功,积分增加
异常事件流填写flag有误,提示错误

组队

加入战队
用例名称加入战队
执行者用户
基本事件流1.进入战队版块
2.搜索战队信息
3.申请加入战队
4.若队长同意,则加入战队,否则加入失败
异常事件流搜索战队信息错误
组队比赛
用例名称组队比赛
执行者用户
基本事件流1.进入竞赛版块
2.选择竞赛
3.若该竞赛截止时间未过则等待竞赛开始
4.若竞赛开始则开始答题
5.竞赛结束显示竞赛结果及排行信息
异常事件流搜索竞赛已经截止

数据库设计

用户表

属性名类型描述
user_idinteger用户编号
usernamevarchar用户名
passwordvarchar密码
emailvarchar邮箱
telephonevarchar手机号
user_pointsinteger用户积分
solved_problemsinteger解题数
user_imagesvarchar用户头像
team_idinteger队伍编号

题目表

属性名类型描述
problem_idinteger题目编号
problem_titilevarchar题目标题
difficultyinteger难度系数
problem_descriptionvarchar题目描述
problem_scenevarchar题目场景
problem_appendixvarchar题目附件
problem_answervarchar题目答案
problem_pointsinteger题目积分
problem_type_idinteger题目类型编号

竞赛表

属性名类型描述
contest_idinteger竞赛编号
contest_titlevarchar竞赛主题
sponsorvarchar主办方
start_timetime竞赛开始时间
end_timetime竞赛结束时间
contest_introductionvarchar竞赛介绍
team_numsinteger参赛队伍数

队伍表

属性名类型描述
team_idinteger队伍编号
team_namevarchar战队名称
team_nameinteger队长id
team_numsinteger战队人数
team_pointsinteger战队积分
team_create_timetime战队创建时间

设计模式

单例模式

注册界面使用了单例模式,点击注册按钮时,无论如何,都只能打开一个注册界面。如果不使用单例模式对注册窗口对象进行唯一化,则将弹出多个窗口且这些窗口显示的内容完全一致,浪费内存资源。

UML类图:

img

工厂模式

在日志记录中运用到了工厂模式,该记录器可以通过多种途径保存系统的运行日志,如通过文件记录或数据库记录。

UML类图:

img

MVC模式

在用户、题目、队伍的管理中运用到了MVC模式。

以用户User为例,创建一个作为模型的User的对象,UserView是一个把用户详细信息输出到控制台的视图类,UserController是负责存储数据到User对象的中的控制器类,并相应的更新UserView。

UML类图:

img

作者:457

...全文
754 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧