SIlAbT3am-CTF是一个CTF平台,做给学弟们用来校内选拔人才和进行组内出题交流的。做为一个退役的二流CTFer希望做最后一件组里的事。也希望热爱信安的学弟们不要放弃。
该平台根据Spring+SpringMVC+Mybatis,所以直接采用spring boot开发框架。
前部分时间全是仿照PhrackCTF开发,然后很多东西都不太清楚。今天刚一上手,虽然tomcat运行成功了,但是项目的URL格式却不知道,一直看不到真面目,虽然把几个关键的xml都看了也没看到。另外还有postgresql和mail邮箱系统,这两块我都没接触过,当然还有阿里巴巴的druid数据连接池 Shrio 安全框架。自己目前的开发水平只能做个hello jsp。这些开发技能都还没有掌握,也借此机会学习一波。安装SSM框架的思路,最先要做的就是数据库了,但是postgresql自己实在太笨了,学了一天(网上搜索)也没搞明白,自己也就在Centos7中搭建和创建第一个DB,其次如何连接其service都不太明白,只能说前路漫漫其修远兮。
然后,这个当作一个开发系列博客,每次学了点都会写进去,加油,我一定能够成功写出来的。
后端框架
spring+springMVC
数据库连接池
阿里巴巴Druid
SQL映射框架
Mybatis
安全框架
Apache Shrio
数据库
postgresql
前端
Bootstrap+jQuery
开发思路肯定是先知道自己的程序要实现那些功能,然后逐个开发、优化。
根据PhrackCTF的源码,我先来看看这个平台具有那些功能,原作者也称他为功能最全的CTF平台。
- 缓存管理器(SpringCacheManagerWrapper)
- 对日期排序(CompareDate)用户按得分排序(CompareScore)队伍得分排序(CompareTeamScore)
- 验证码生成器(CaptchaImageCreateController)
- 答题页面的Controller(ChallengeController)
- 国家页面的控制器 (CountryController)
- 个人面板控制器 (DashboardController )
- 后台文件上传的控制器 (FileUploadController )用于放MISC或者PWN/RE题目文件
- Home控制器 (HomeController)
- 登陆(LoginController)
- 后台邮件功能控制器 (MailController )
- 后台主页 (ManageController )
- 用户资料显示页面 (ProfileController )
- 注册页面控制器 (RegisterController )
- 重置密码 (ResetPassController )
- 规则页面 (RuleController )
- 排名页面的控制器 (ScoreBoardController )
- 提示信息的页面 (ShowInfoController )
- 赛题的解题状态 (SolveStatusController )
- My Team页面Controller (TeamController )
- 队伍公共信息页面 (TeamInfoController )
- CSRF安全处理
- Request预处理器,先过滤csrf然后才允许访问对应controller (CSRFHandlerInterceptor )
- 过滤CSRF请求 (CSRFRequestDataValueProcessor )
- CSRF Token管理 (CSRFTokenManager )
- 禁止登录IP查询服务类的实现 (BannedIpServicesImpl )
- 类别服务实现类 (CategoryServicesImpl )
- 赛题的服务实现类 (ChallengeServicesImpl )
- 系统设置服务实现类 (ConfigServicesImpl )
- 国家接口的实现 (CountryServicesImpl )
- Files字段实现类 (FileServicesImpl )
- Hints表段服务实现类 (HintServicesImpl )
- 用户操作日志服务实现类(IPlogServicesImpl )
- 新闻服务实现类(NewsServiceImpl )
- 后台操作日志服务的实现类 (OperateLogServicesImpl )
- 密码重置服务的实现类 (PassResetServicesImpl )
- 规则页面实现方法 (RuleServicesImpl )
- 对应表submissions服务实现类 (SubmissionServicesImpl )
- 队伍查询服务的实现类 (TeamServicesImpl )
- 被禁止登录的IP查询服务 (BannedIpServices )
- 题目类型的Services (CategoryServices )
- 所有赛题的服务接口 (ChallengeServices )
- 系统设置信息 (ConfigServices )
- 国家接口 (CountryServices )
- 对应数据库Files字段 (FileServices )
- 服务类接口,对应字段hints (HintServices )
- 用户操作日志 (IPlogServices )
- 新闻的数据库访问操作 (NewsServices )
- 后台操作日志的接口 (OperateLogServices )
- 密码重置服务 (PassResetServices )
- 规则页面数据接口 (RuleServices )
- 用户提交答案记录的Services (SubmissionServices )
- 管理参赛队伍 (TeamServices )
- 用户数据库访问接口 (UserServices )
- 每道题最后的附件对象 (Attaches )
- 按分类统计的进度 (CateProcess )
- 题目管理(ChallengeInManager )
- 国家页面的排行榜 (CountryRank )
- 用于在后台展示用的Hint呈现类 (HintDisp )
- team后台显示的ip地址列表 (IpLogsList )
- 后台操作界面用于显示的对象 (OpLogDisp )
- 用户排名对象 (RanklistObj )
- 分数页面展示用的对象 (ScoreBoardObj )
- 趋势图的POJO类 (ScoreTrend )
- 每个用户的每个题目状态 (SolveList )
- 赛题通过列表里的对象 (SolveStat )
- 用户信息页面通过的赛题列表对象 (SolveTable )
- 提交列表的POJO类 (SubmissionList )
- 用于显示的Hint POJO类 (TaskHint )
- 后台team列表 (TeamList )
- 团队成员的类 (TeamMember )
- 后台用户列表的对象 (UserList )
- 通用操作(CommonUtils )
- 获取当前控制器名称
- 对用户输入内容进行过滤
- 统计用户使用信息
- xss过滤器
- 后台日志记录工具类 (后台日志记录工具类 )
- 邮件发送工具类 (邮件发送工具类 )
- Shiro(shiroDbRealm )
- 清除所有用户授权信息缓存
有这些功能
缓存管理器 排序,日期、个人得分、团队得分 验证码生成器 答题页面的控制器 国家页面的控制器 个人面板控制器 后台文件上传 Home 登陆 后台邮件功能 后台主页 用户资料显示页面 注册页面 重置密码 规则页面 排名页面 提示信息 赛题的解题状态 我的团队页面 队伍公共信息页面 CSRF 禁止登陆IP查询 用户操作日志 新闻服务 后台操作日志 队伍查询 系统设置信息 管理参赛队伍 题目管理 按分类统计的进度 团队后台显示的ip地址列表 趋势图 xss过滤器 Shiro
在pom.xml中
这个是下载jdbc驱动的。所以本地还是需要有postgresql的,emm感觉还是先把postgresql学一下吧。
完成了后台主要的Java程序,和数据库操作。学了JavaMail API的用法,然后第三天打比赛不做了。