关于Jarvis OJ的一切,我一定要写下来
Jarvis OJ: https://www.jarvisoj.com/
Jarvis OJ是我的一个业余之作,一个CTF在线练习平台,主要用于phrack战队的平时训练和整理各次比赛高质量题目使用,当然我在开发之初也希望这个平台可以使更多的CTF爱好者受益,所以网站托管在了阿里云上同时有实验室的经费支持也做好了长期运营的准备。
说起这个平台的来历,其实是在2015年4月的时候,我所在的USS Lab.实验室老师一直想建立一支CTF战队,由于本校已经有一支老牌强队AAA,如果自己在搞一套势必会有一定竞争,且操作起来存在较大障碍,因此本想和计算机学院合作一起建设,但是当时谈判十分不愉快,很快就谈崩了,计算机学院不愿意合作,即使他们自己不太投入资源建设,也不想和其他人合作。在此期间作为我个人也和AAA战队当时的带头人聊过,但也许人各有志,对方也没有合作意向,于是就此作罢。
最终老师决定白手起家由实验室自己支持组建一支CTF战队,定名为phrack战队,但从0到1的建设总是有很多困难,有了想法有了资金支持,最后还需要人。2015年7月开始虽然招收了第一批成员,但一直没有很好的组织起来,积极性不是很高,大部分大三大四的成员很快也毕业了,这是一次失败的经历。(用AAA老队员的话说,我们这边就没有谁是靠谱的),到了2016年4月,我想着其实可以办一场phrackCTF比赛,也可借此机会挖掘出一些新人,由于当时并没有用户体验符合我要求的CTF平台,所以对于比赛所用的CTF平台要求苛刻的我决定自己开发一套系统,而且是一套严肃的系统。当时的phrackCTF系统使用的是Spring+SpringMVC+mybatis+postgresql的架构,应该是首款使用MVC模式开发的CTF平台,phrackCTF平台当时总共开发了2个版本,一个是用于个人参赛的,一个版本是用于队伍参赛的,两个版本在2016年6月份都已经开源,如果你打算在比赛中使用,可以到这里得到源码:
队伍参赛版:https://github.com/zjlywjh001/PhrackCTF-Platform-Team
个人参赛版:https://github.com/zjlywjh001/PhrackCTF-Platform-Personal
现在说到关键了,Jarvis OJ就是这时候萌生的想法,通常来说,比赛结束了,题目也就关闭了,这是2016年之前的常态,我那时候就想,能不能像以前的NOIP一样,做一个Online Judge这样的平台,也算是一个公益项目。当时phrackCTF平台已经开发完毕,所以想着在phrack CTF的基础上,进行二次开发,很快Jarvis OJ的Beta版本就在2016年6月13号上线了,过了没多久,记得大概6月15-16号的样子,AAA的练习平台,当时他们起了个名字叫School Bus,声称会在7月1日上线,我其实挺佩服这帮黑客的脑洞的,我就想不出很顺口的名字,也许是因为我来自于传统行业,行事都比较严肃吧。其实知道这个事情的时候,也许你觉得我会很生气,实际上不是,当时窃喜了2天,这说明什么,说明我的想法以及产品思维,是走在别人前列的,而且执行力发挥的淋漓尽致。
在那个时候,我已经发现了Jarvis OJ Beta版本的一些缺陷,比如某些大量数据的检索页面没有分页,使用的是老旧的服务器渲染,分类的颜色只有5种等等,在一个比赛的1-2天内,这些都不会成为问题,而当作为一个长期运行,比如3-5年这样的一个网站,这些在后期会造成严重问题,严重影响用户体验,所以很快,我在将phrackCTF的2个平台开源之后,就萌生了重构整个Jarvis OJ的想法。当然,受限于当时的前端开发能力较差,这个事情一直拖到了今年的10月,而整个10月我都在忙CAN Omega的项目,从10月25-11月1号的时候,我确定这件事不能再拖了,记得当时是花了3天硬着头皮把React.js的文档给读了一遍,为什么是React.js,因为我在创业的时候认识了一个朋友,他是之前是某个创业公司的主程,看起来逼格非常高,而在我认识他的时候,我还什么都不懂,他在和我聊天的时候总是说我什么什么过时了,那个也过时了,所以,在后来的一段时间里面,我一直是看他用什么架构,我也照着开发一个,体验体验不同框架之间的区别,他所谓先进的框架,到底实际开发体验如何,也只有亲自体验过才能知道。但我发现到了后来,到处都是坑,太激进也会成为问题。不过,功能比较全面的js框架,也只有Google AngularJS和Facebook React之间选择了,由于实在受不了AngularJS在html里嵌一大堆奇怪的标签,所以最终选择了只需要会js就能写的React.js,虽然后来因为这个选择,让我痛苦了1个多月。
其实前端的界面效果,我只用了6天就写完了(11月1-6号),最难受的是前端的数据流,由于组件之间是耦合的,而React使用的是单向绑定的数据流,如果要解决组件之间耦合传值的问题,需要用flux或者redux之类的解决方案,虽然flux易于理解,但因为被人诟病太多,最终我选择的是redux,这个选择还是坑了我一把,花了不少时间才从函数式编程角度理解了redux到底是个咋回事。这时候已经11月28号了,最终,也是花了7天时间,把后端完全重写,改为全部使用json交互数据,做完据流,重构完的JarvisOJ终于在12月5号上线了。这次重构使用的是React.js+redux+material-ui,此时的JarvisOJ已经今非昔比,是一个庞大的单页面应用了,内容加载速度和用户体验比原来提升了非常多。当然,美中不足就是,SEO彻底完蛋,不过对于OJ类网站,SEO似乎并不重要,所以也接受了这个蛋疼的结果。
关于Jarvis OJ和phrack战队的未来,说实话我还没有想的太明白,老师觉得我们可以更加专注于物联网领域,不用和AAA正面竞争,但我心里其实并不是滋味,即使技不如人,也没有那么容易就说放弃,我知道只靠我自己一个人的力量去做事真的很难,可我又偏偏是个喜欢绕弯路的人,如今能掌握通信、电子、计算机、嵌入式、PCB设计、底层软件、驱动程序、上位机软件、Web前端、后端、运维以及今后任何我感兴趣领域的知识,我觉得自己还是非常幸运的,况且,这并不是终点。
如今临近毕业,有些事情也是无能为力,但绝不放弃,如今还是可以留下一些东西,证明自己存在过。记得当年刚开始玩安全的时候,心态却比现在潇洒:“我搞安全就是来陪你们这些黑客玩的,玩不过又怎么样,大不了不和你们玩了”,而现在没想到在安全行业一晃也2年多了,兴趣渐渐成了职业,难免徒增了不少压力,这么多年辗转这么多领域,从另一个角度来看也可以理解为是逃避的表现,不过,总归还是获得了一些益处,一切都还是值得的。
写到最后,自己也看不下去了,就这样吧,还是以那句话,就算无法完成创举,但也一定要留下些什么,证明自己存在过,要是哪一天我不在了,没有人记得,那才是真正的悲剧吧!
小星星
你不会认识我,我也是今天才知道这篇文章,真的牛,雄起~
Konso
原来队史是这样的,之前一直没明白。。。。
est
博主你好,非常喜欢JarvisOJ平台,感谢开源!我想请问一下,这上面的题目可以在哪里讨论求解?目前卡在一题上,非常纠结。。
Jarvis
不是太建议在公众场合讨论,平台的题目大多数类型在过往的比赛中都已出现过,实在做不出来可以参考以前的writeup。
辣鸡的我
大牛你好 不知道为什么 我搭建了CTF平台却发不出邮件.
Jarvis
你用的是phrackCTF的程序么?
ch
能否给个邮箱或联系方式?请教点问题
Jarvis
首页点我头像就有
辣鸡的我
嗯 平台是运行起来了 按照md提示里面修改了邮箱配置和模板 邮件也发送成功 但是目标邮箱没有收到邮件.
Jarvis
这个原因很多,首先你要看下你的邮件系统支不支持ssl,用的是tls还是ssl,相应的地方要改对,然后实在不行可以加上debug为1的配置项,看看具体有什么问题。
辣鸡的我
用的163邮箱 然后日志也没报错 嗯 还是慢慢的看看吧
奈沙夜影
你好,最近在刷JarvisOJ,发现Reverse-软件破解3存在可被程序通过的3个解,但是平台只能接受一个~
Jarvis
此题是有点问题,交一个即可。
烧包包儿
刚刚开始做JarOJ 大大的界面做的真好看。 不知道咋地,提交FLAG,明明对的却会报错。但是多提交几次就对了。 是不是服务器哪里出了问题2333 希望JarOJ能越做越好
Jarvis
可能提交的内容里有不可见字符或者空格之类的,可以自己检查一下。
dacong
大佬你好,请问最近 OJ 的 Web 题目是出问题了吗?在我这边全部无法打开,提示:"web.jarvisoj.com refused to connect." 。
Jarvis
已修复
鸡蛋
blog的主题是自己做的还是在网上找的?
Jarvis
这个主题叫No.7,你可以搜一下
meiosis
学长在校内怎么没有宣传呀。。98上都找不到相关信息?
Jarvis
都毕业很久了,学校里不知道有没有人管了~~
odinms
师傅你好 phrackCTF这个程序里面自带题库吗 打算部署一下
Jarvis
不带题目,就是一个比赛平台,题目可以自己命题。
0x14
希望也成为像博主一样的,可以学习掌握感兴趣知识技术的人!?
zhangshanfeng
您好,pwn.jarvisoj.com的题目好像挂掉了……pwn2.jarvisoj.com的题目是正常的
Jarvis
有一个题好像挂掉了,现在已恢复
HAN
您好,我有两道pwn题目(tell me something 和smashes)都出现连接不上的问题,Could not connect to pwn.jarvisoj.com on port 9877,有的题目可以连上,请问是这两道题目的问题,还是?
Jarvis
已修复
HAN
好的,谢谢!还请楼主再看看level部分的题目,有几道level的题目连接不上。
HAN
您好,最近在做这个oj上的题目,发现level部分的题目都出现无法连接现象,请楼主修复下,谢谢!
Jarvis
刚看过了是好的啊。
zty
大佬你好,请问为什么我用谷歌邮箱在oj上面注册了账号没有收到验证邮件?垃圾箱里面也没有啊
Jarvis
刚测试了没有问题,可能偶尔发送邮件失败,你可以用首页的forget password功能重新发一次重置密码链接
butler
web题目打不开,肿么办啊啊?
Jarvis
哪个题?
om
博主您好,最近访问JarvisOJ平台,无法登陆,输入用户名和密码之后原地卡主,再次点击submit之后提示验证码不争取,重新尝试依然无法登陆
Jarvis
已恢复。
wang
还是不能登录
平芜尽处外
登入账户的时候,验证码那部分出现bug了,登不上
平芜尽处外
登入账户的时候验证码那部分出现bug了,登不上
gky008
希望添加中兴f6600m的配置文件加解密支持
gky008
希望添加中兴f6600m的配置文件加解密支持,可以了或者需要配合加我qq715857527
小菜鸡
博主您好,Jarvis OJ又登不上了,望能修复,谢谢……
qaq
平台无法登录/(ㄒoㄒ)/~~
高
博主您好,我注册了用户,但是登不上去,是不是出bug了,可以给解决一下吗
通风管看看
为啥我oj登不上去,试了好多次了,呜呜呜