一种CTF在线竞赛平台动态Flag处理方法及装置与流程

文档序号:12719539阅读:6769来源:国知局
一种CTF在线竞赛平台动态Flag处理方法及装置与流程

本发明涉及一种CTF在线竞赛平台动态Flag处理方法及装置,属于信息处理技术领域。



背景技术:

CTF(Capture The Flag)中文一般译作夺旗赛,是一种流行的信息安全竞赛形式。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。CTF竞赛模式主要有三类,解题模式,攻防模式和混合模式。

一、解题模式(Jeopardy)

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

二、攻防模式(Attack-Defense)

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

三、混合模式(Mix)

结合了解题模式与攻防模式的CTF赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。

其中解题模式一般为在线竞赛,各种CTF在线竞赛平台应运而生,现有CTF在线竞赛平台采用题目、平台松耦合机制,需求环境的题目需提前部署题目环境,录制题目内容,在比赛中使用CTF在线竞赛平台引导用户访问现有内容和环境进行答题。这种方式主要有个弊端即题目Flag唯一,所有队伍共享题目文本/附件/环境,Flag是唯一的,参赛队伍/人可以通过非解题手段获取他人Flag提交,平台无法判断Flag获取途径,也无法通过Flag区分获取途径。



技术实现要素:

发明目的:针对现有技术中存在的问题,本发明提供一种CTF在线竞赛平台动态Flag处理方法及装置,有效预防参赛选手作弊现象。

技术方案:为实现上述发明目的,本发明采用如下技术方案:

一种CTF在线竞赛平台动态Flag处理方法,包括如下步骤:

(1)在接收到用户访问题目的请求时,生成动态Flag并保存,不同用户访问同一题目以及同一用户访问不同题目时生成的动态Flag均不同;

(2)用步骤(1)生成的动态Flag替换原始题目中的信息,生成新的题目返回给用户;

(3)在接收到用户提交的Flag时,将其与所保存的Flag进行对比,判断用户提交的是否正确。

所述题目为文本说明类题目时,所述步骤(2)中用动态Flag替换原始题目中的文本,动态生成包含动态Flag的新的题目文本。

所述题目为附件下载类题目时,所述步骤(2)中根据动态Flag修改原始题目的内容,生成新的文件并将新文件的下载地址返回给用户;若所述附件下载类题目为编译后的可执行文件,则根据动态Flag修改相应代码文件的内容,重新编译生成新的可执行文件,并将下载地址返回给用户。

作为优选,当需下载的文件为多个文件时,将多个文件打包后并将压缩包的下载地址返回给用户。

所述题目为在线环境类题目时,所述步骤(2)中通过在环境生成之前将动态Flag写入初始化脚本实现将Flag注入到在线环境中。

作为优选,在线环境的初始化脚本中包括Flag注入脚本,步骤(2)中先根据动态Flag修改Flag注入脚本内容,生成新的Flag注入脚本,或将动态Flag作为参数传递给Flag注入脚本,再调用环境部署程序进行在线环境部署,将部署的在线环境访问地址返回给用户。

作为优选,所述步骤(1)中动态Flag为随机产生的一定长度的字符串,或者采用对用户信息、题目信息和时间戳进行不可逆加密算法得到的字符串。

作为优选,所述步骤(3)中若用户提交的Flag不正确,还判断用户是否作弊,若用户提交的是其他用户的Flag,则认为两个用户之间存在作弊行为。

一种基于上述的CTF在线竞赛平台动态Flag处理方法的装置,包括:用户请求与响应模块,动态Flag模块,题目生成模块,以及验证模块;

所述用户请求与响应模块,用于接收用户访问题目的请求,并将动态生成的题目返回给用户;

所述动态Flag模块,用于生成并保存动态Flag;

题目生成模块,用于接收动态Flag模块生成的Flag,并根据接收到的动态Flag动态生成相应的题目;

所述验证模块,用于将用户提交的动态Flag与所保存的Flag进行对比,判断用户提交的是否正确和是否作弊。

所述题目生成模块包括:

文本说明类题目生成单元,用于接收动态Flag,并动态生成包含动态Flag的新的题目文本;

附件下载类题目生成单元,用于接收动态Flag,并根据动态Flag修改原始题目的内容,生成新的文件并将新文件的下载地址返回给用户;

以及在线环境类题目生成单元,用于接收动态Flag,并通过将动态Flag写入初始化脚本从而实现将Flag注入到在线环境中。

有益效果:与现有技术相比,本发明通过动态Flag为每个队/个人动态生成不同包含不同Flag的题目,可以有效的减少队员交互Flag、获取他人Flag的行为,让选手更加专注于题目本身,放弃从其他非解题途径获得Flag的幻想,并且还能进一步发现选手可能存在的作弊行为,以便于对作弊选手进行警告、屏蔽、放开等操作。

附图说明

图1为本发明实施例的方法流程图。

图2为本发明实施例的装置结构示意图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

如图1所示,本发明实施例公开的一种CTF在线竞赛平台动态Flag处理方法,主要包含动态Flag生成、动态Flag分发以及用户提交Flag动态验证三个关键机制,具体包括如下步骤:

步骤(1)、在接收到用户访问题目的请求时,生成动态Flag并保存,不同用户访问同一题目以及同一用户访问不同题目时生成的动态Flag均不同。本步骤中,用户访问题目时,由XCTF实训平台统一生成一个专属于该用户该题目的Flag并保存在数据库中,该动态Flag可以是随机产生的一定长度的字符串,或者根据用户和题目相关信息采用加密算法得到,较为优选的方法是选取用户ID、题目ID和时间戳的组合字符串通过MD5、SHA1等不可逆加密算法得到。平台统一生成动态Flag后将Flag分发给题目。

步骤(2)、用步骤(1)生成的动态Flag替换原始题目中的信息,生成新的题目返回给用户。本步骤中,每个具体的题目收到分发的动态Flag后,便将新的Flag注入到原始题目模板中,具体注入方法对于CTF常见的文本说明类、附件下载类、在线环境类不同种类题目类型采取的实现方式稍有区别,具体如下:

a.文本说明类题目

生成题目进程收到平台分发的Flag后,读取原始题目文本,将新的Flag更新到文本中,动态生成包含动态Flag的文本返回给用户。生成的新题目文本可保存在数据库中,再次访问题目时可直接返回该文本。

b.附件下载类题目

生成题目进程收到平台分发的Flag后,加载需要更新Flag的原始题目文件,根据动态Flag修改原始题目的内容,生成新的文件并将新文件的下载地址返回给用户。对于需要经过编译的可执行文件(如c语言写的题目),根据动态Flag修改相应代码文件的内容,修改之后重新编译生成新的可执行文件,修改题目代码是针对一些需要编译的题。也可以将需要下载的一个或多个文件打包后将压缩包的下载地址返回给用户。动态生成的新的下载文件的地址也可保存在数据库中,再次访问题目时可直接返回保存的附件地址。

c.在线环境类题目

对于在线环境类的题目,通过在环境生成之前将动态Flag写入初始化脚本实现将Flag注入到在线环境中。生成题目进程收到平台分发的Flag后,先根据动态Flag修改Flag注入脚本内容,生成新的Flag注入脚本,或将动态Flag作为参数传递给Flag注入脚本,再调用环境部署程序进行在线环境部署,环境部署时会运行安装题目脚本,调用到动态Flag注入脚本,去改变系统的Flag值。环境部署好后将在线环境访问地址返回给用户。在环境未回收期间数据库中会保存对应的地址,用户多次访问都是同一个环境,环境回收的同时会清理数据库中相关信息,环境回收后用户再申请该题目,会重新生成一个新的Flag和环境。

步骤(3)、在接收到用户提交的Flag时,将其与数据库中所保存的Flag进行对比,判断用户提交的是否正确,若用户提交的Flag不正确,还可进一步判断用户是否作弊,若用户提交的是其他用户的Flag,则认为两个用户之间存在作弊行为。

如图2所示,本发明实施例公开的一种基于上述的CTF在线竞赛平台动态Flag处理方法的装置,包括:用户请求与响应模块,动态Flag模块,题目生成模块,以及验证模块。其中用户请求与响应模块,用于接收用户访问题目的请求,并将动态生成的题目返回给用户;动态Flag模块,用于生成动态Flag,并将动态Flag保存至数据库;题目生成模块,用于接收动态Flag模块生成的Flag,并根据接收到的动态Flag动态生成相应的题目;验证模块,用于将用户提交的动态Flag与所保存的Flag进行对比,判断用户提交是否正确和是否作弊。

其中题目生成模块包括:文本说明类题目生成单元,用于接收动态Flag,并动态生成包含动态Flag的新的题目文本;附件下载类题目生成单元,用于接收动态Flag,并根据动态Flag修改原始题目的内容,生成新的文件并将新文件的下载地址返回给用户;以及在线环境类题目生成单元,用于接收动态Flag,并通过将动态Flag写入初始化脚本从而实现将Flag注入到在线环境中。

在实际比赛中,我们可以首先部署好题目和相应的动态Flag接收程序,在比赛中用户访问题目环境时根据题目类型不同采用以上不同的方案动态生成每个队/个人的题目环境。选手在答题过程种通过非解题途径获取了其他用户/队伍的Flag,并提交给系统,系统能够智能识别出该作弊用户,对于作弊用户,平台会默认将该用户和提供给该用户Flag的两个用户屏蔽掉,并给予警告,同时将记录选手答题记录,在主办方许可的情况下可取消该用户和提供Flag的用户的屏蔽。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1