本发明涉及一种基于透明代理生成ctf动态flag的方法及系统,属于信息处理技术领域。
背景技术
ctf(capturetheflag)中文一般译作夺旗赛,是一种流行的信息安全竞赛形式。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“flag”。ctf竞赛模式主要有三类,解题模式,攻防模式和混合模式。
一、解题模式(jeopardy)
在解题模式ctf赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的ctf竞赛与acm编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与利用、web渗透、密码、取证、隐写、安全编程等类别。
二、攻防模式(attack-defense)
在攻防模式ctf赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式ctf赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续48小时及以上),同时也比团队之间的分工配合与合作。
三、混合模式(mix)
结合了解题模式与攻防模式的ctf赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。
其中解题模式一般为在线竞赛,现有的ctf在线竞赛平台采用题目、平台松耦合机制,需求环境的题目需提前部署题目环境,录制题目内容,在比赛中使用ctf在线竞赛平台引导用户访问现有内容和环境进行答题。对于web类题目,也是提前部署赛题web交互环境,录制题目信息至答ctf在线竞赛平台,在比赛中使用ctf在线竞赛平台引导用户访问赛题web交互环境,这种方式主要有个弊端即所有队伍共享环境,赛题答案唯一,无法防止用户作弊行为,赛后对日志审查工作量巨大。
为解决赛题flag唯一的情况,现有部分方案是进行多套环境、日志审查相结合的方式,在录制赛题信息至ctf在线竞赛平台时一道题目部署多套答案不同其他内容完全相同的环境,达到部分用户答案不同的目的。如公告号106874245a的发明专利申请公开的一种ctf在线竞赛平台动态flag处理方法,通过修改在线环境的flag注入脚本来实现各在线环境的flag不唯一。现有方法在参赛队员有限和资源足够的情况下,可以有效缓解作弊行为,但缺点是无法支撑大批量用户、资源消耗大、运维工作量翻倍。
技术实现要素:
发明目的:针对现有技术中存在的问题,本发明目的在于提供一种基于透明代理生成ctf动态flag的方法及系统,实现一套赛题环境下基于用户token的动态flag,大大降低赛题资源消耗和运维工作量。
技术方案:为实现上述发明目的,本发明采用如下技术方案:
一种基于透明代理生成ctf动态flag的方法,包括如下步骤:
在线竞赛平台在接收到用户浏览器的首次访问请求时,生成用户唯一token并种植进用户浏览器;
在线竞赛平台在接收到用户浏览器获取赛题地址的请求时,返回所请求访问的赛题的代理服务器地址;
用户浏览器获取到赛题代理服务器地址后,携带token访问代理服务器;
代理服务器在接收到用户浏览器携带token的赛题访问请求时,将请求转发至赛题服务器,并接收赛题服务器返回的赛题内容;
代理服务器接收到赛题服务器返回的赛题内容后,检测赛题内容是否包含flag,若不包含flag信息,直接返回赛题内容给用户浏览器,否则将原flag和token进行可逆加密计算获得新flag,使用新flag代替内容中的原flag后返回给用户浏览器;
在线竞赛平台接收到用户浏览器提交的flag后,将用户提交的flag和原赛题flag进行可逆加密的逆运算,并根据逆运算结果得出用户答题结果。
进一步地,代理服务器在转发过程中根据token进行日志打包。
进一步地,基于透明代理生成ctf动态flag的方法还包括:
代理服务器接收到用户浏览器未携带token的赛题访问请求时,将请求重定向至在线竞赛平台;
在线竞赛平台在接收到用户浏览器未携带token的赛题访问请求时,生成用户唯一token并种植进用户浏览器。
进一步地,在线竞赛平台根据逆运算结果得出用户答题结果的具体方法为:
若用户提交的flag和原赛题flag加密逆运算失败,则用户答题失败,若逆运算成功得到token,则:
若得到的token为当前用户,则用户答题成功;
若得到的token不在系统中,则用户答题失败;
若得到的token为系统中其他用户,则判定用户作弊。
一种基于透明代理生成ctf动态flag的系统,包括在线竞赛平台、代理服务器和赛题服务器;所述在线竞赛平台,用于在接收到用户浏览器的首次访问请求时,生成用户唯一token并种植进用户浏览器;以及在接收到用户浏览器获取赛题地址的请求时,返回所请求访问的赛题的代理服务器地址;以及在接收到用户浏览器提交的flag后,将用户提交的flag和原赛题flag进行可逆加密的逆运算,并根据逆运算结果得出用户答题结果;所述代理服务器,用于在接收到用户浏览器携带token的赛题访问请求时,将请求转发至赛题服务器,并接收赛题服务器返回的赛题内容;以及在接收到赛题服务器返回的赛题内容后,检测赛题内容是否包含flag,若不包含flag信息,直接返回赛题内容给用户浏览器,否则将原flag和token进行可逆加密计算获得新flag,使用新flag代替内容中的原flag后返回给用户浏览器;所述赛题服务器,用于接收代理服务器转发的访问请求并返回所部署的在线赛题环境的内容,同一赛题只部署一套环境。
有益效果:与现有技术相比,本发明具有如下优点:
1、本发明对于同一赛题无需部署多套赛题环境,可以实现一套环境下基于用户token的动态flag。
2、本发明可在用户全程无感知的情况进行防作弊并独立记录交互日志,更加的方便了运维人员,也能够有效的检测选手异常提交他人flag的行为,进行处理。
附图说明
图1为本发明实施例的基于透明代理生成ctf动态flag的方法流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本发明实施例公开的一种基于透明代理生成ctf动态flag的方法,主要包括首次访问流程、赛题访问流程和答案校验流程。
首次访问流程主要包括:
(1)用户通过浏览器访问在线竞赛平台;
(2)在线竞赛平台在接收到用户浏览器的首次访问请求时,生成用户唯一token并种植进用户浏览器;
(3)用户通过浏览器向在线竞赛平台获取赛题地址;
(4)在线竞赛平台在接收到用户浏览器获取赛题地址的请求时,返回所请求访问的赛题的代理服务器地址。
赛题访问流程主要包括:
(1)用户浏览器获取到赛题代理服务器地址后,携带token访问代理服务器;
(2)代理服务器在接收到用户浏览器携带token的赛题访问请求时,将请求转发至赛题服务器,并接收赛题服务器返回的赛题内容;
(3)代理服务器接收到赛题服务器返回的赛题内容后,检测赛题内容是否包含flag,若不包含flag信息,直接返回赛题内容给用户浏览器,否则将原flag和token进行可逆加密计算获得新flag,使用新flag代替内容中的原flag后返回给用户浏览器。
在上述请求转发处理过程中,代理服务器可根据token进行日志打包,方便审查。
答案校验流程主要包括:
(1)用户通过浏览器提交flag至在线竞赛平台;
(2)在线竞赛平台接收到用户浏览器提交的flag后,将用户提交的flag和原赛题flag进行可逆加密的逆运算,并根据逆运算结果得出用户答题结果。
为防止用户异常访问,还包括异常处理流程:
(1)用户浏览器未携带token访代理服务器;
(2)代理服务器返回重定向响应,重定向至在线竞赛平台,用户在下次访问赛题重新被种植token。
下面结合图1,举例说明本发明实施例的具体实现过程:
1、用户通过浏览器访问在线竞赛平台(xoj-ctf平台);
2、xoj-ctf平台生成用户唯一token并种植该token进用户浏览器,该过程用户无感知;
3、用户通过xoj-ctf平台获取赛题地址;
4、xoj-ctf平台返回该赛题的代理服务器地址,用户访问请求被在线竞赛平台引导至代理服务器;
5、用户浏览器携带token访问代理服务器获取赛题内容;
6、代理服务器转发请求至赛题服务器;
7、赛题服务器返回赛题内容至代理服务器;
8、赛题返回内容不包含flag信息时,代理服务器直接返回赛题内容至用户浏览器。
在解题过程中若用户请求的赛题内容包含了flag信息,则处理步骤如下:
9、赛题服务器返回的赛题内容包含flag信息;
10、代理服务器进行透明修改,将原flag和token进行可逆加密计算(可采用des、aes等加密算法)获得新flag,使用新flag代替内容中的原flag;
11、代理服务器返回透明修改后的赛题内容;
12、用户找到flag后,通过浏览器将flag至xoj-ctf平台;
13、xoj-ctf平台进行答案校验,根据用户提交flag和原flag进行可逆加密的逆运算得到token;若逆运算失败,用户答题失败,逆运算成功则判断用户token是否为当前用户:
若得到的token不在系统中,用户答题失败;
若得到的token在系统中,但属于其他人,判定用户作弊;
若得到的token为当前用户,用户答题成功。
本发明实施例公开的一种基于透明代理生成ctf动态flag的系统,包括在线竞赛平台、代理服务器和赛题服务器;在线竞赛平台和代理服务器部署在同一域名下,赛题服务器部署在内网。在线竞赛平台,用于在接收到用户浏览器的首次访问请求时,生成用户唯一token并种植进用户浏览器;以及在接收到用户浏览器获取赛题地址的请求时,返回所请求访问的赛题的代理服务器地址;以及在接收到用户浏览器提交的flag后,将用户提交的flag和原赛题flag进行可逆加密的逆运算,并根据逆运算结果得出用户答题结果;代理服务器,用于在接收到用户浏览器携带token的赛题访问请求时,将请求转发至赛题服务器,并接收赛题服务器返回的赛题内容;以及在接收到赛题服务器返回的赛题内容后,检测赛题内容是否包含flag,若不包含flag信息,直接返回赛题内容给用户浏览器,否则将原flag和token进行可逆加密计算获得新flag,使用新flag代替内容中的原flag后返回给用户浏览器;赛题服务器,用于接收代理服务器转发的访问请求并返回所部署的在线赛题环境的内容,同一赛题只部署一套环境。
本发明实施例的基于透明代理生成ctf动态flag的系统用于实现前述基于透明代理生成ctf动态flag的方法,属于同一发明构思,具体实施细节请参考前述方法实施例,在此不再赘述。