首页> 中国专利> 一种网络攻防在线实训OJ系统及方法

一种网络攻防在线实训OJ系统及方法

摘要

本发明提供了一种在线攻防的OJ实训系统及方法,该系统包括系统设置模块、登录注册模块、题目管理模块、答题模块以及动态靶机模块,其中所述动态靶机模块用于用户对拥有动态靶机功能的题目创建对应靶机,用户可以对自己创建的靶机进行关闭和重启,管理员可以查看、重启、关闭所有已经创建的靶机。对于一些需要靶机的题目,可以管理员在建立好基础镜像之后,可以让用户进行答题的时候自行开启靶机;题目分数随着答出题目的人员增加而减少,可以让成员知道题目的难易程度,积分系统设置合理。该系统兼容性强,在复现比赛题目的场景或者训练学生网络安全技术,为学生在课堂学习中对于专业技术提供训练平台。

著录项

  • 公开/公告号CN114897380A

    专利类型发明专利

  • 公开/公告日2022-08-12

    原文格式PDF

  • 申请/专利权人 尚蝉(浙江)科技有限公司;

    申请/专利号CN202210550811.3

  • 申请日2022-05-18

  • 分类号G06Q10/06(2012.01);G06Q50/20(2012.01);G06F21/31(2013.01);

  • 代理机构北京市盛峰律师事务所 11337;

  • 代理人于国富

  • 地址 315199 浙江省宁波市鄞州区中河街道科技路455号1018

  • 入库时间 2023-06-19 16:22:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-30

    实质审查的生效 IPC(主分类):G06Q10/06 专利申请号:2022105508113 申请日:20220518

    实质审查的生效

说明书

技术领域

本发明涉及网络攻防技术领域,尤其涉及一种网络攻防在线实训OJ系统及方法。

背景技术

国内CTF比赛平台大都是解题模式下的训练,即对已经搭建好的靶机中运行的网站进行攻击,可以获取靶机服务器的权限,从而可以任意修改服务器里的内容,通过这种方式,“解题”模式判定得分通过服务器下的名字为“flag”文件,此文件不可通过正常访问网站得到里面的内容,最后其flag交到比赛平台的对应题目解答,就可获取对应分数,最终通过积分排名。但题目的难度系数通常是不可控的,所以会有动态分数的形式,即一道题目被解出得越多,其分数就会越低。目前集训队对CTF的训练需要优化不错的解题平台,同时考虑到平台的不断优化和增加新功能(如动态靶机功能),考虑python语言的灵活性,所以准备将平台的初始框架定为Flask,参考运用到Flask框架的文献,其性能不逊于thinkphp框架,并且在有需求的时候可以加入多线程模式,提高平台的响应速度。

总之,综上背景阐述,发现目前此方面的技术还存在以下问题:1.未用采用更加成熟的框架,使搭建出来的系统性能十分依赖硬件资源;2.所采用的框架目前尚有未知漏洞的可能性更高,后期维护将十分不方便;3.采用的语言兼容性不及python,为接下来开发新功能设置了一定的阻碍;4.特殊题目需要给用户权限开启动态靶机的功能未出现。

发明内容

本发明的目的在于提供一种网络攻防在线实训OJ系统及方法,从而解决现有技术中存在的前述问题。

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

一种网络攻防在线实训OJ系统,采用bootstrap作为前端框架,flask为后端框架,基于python语言、docker技术以及frp技术获得,包括系统设置模块、登录注册模块、题目管理模块、答题模块以及动态靶机模块,所述系统设置模块用于对系统参数进行简易设置,包括时间、是否开放注册、是否对游客隐藏系统设置的相关界面;所述登录注册模块用于新用户的注册以及已注册用户的登录验证过程,并判断登录人员的权限范围;所述题目管理模块用于管理所有试题,包括但不限于新建、删除以及编辑试题;所述答题模块用于用户登录之后对题目进行答题;所述动态靶机模块用于用户对拥有动态靶机功能的题目创建对应靶机,用户可以对自己创建的靶机进行关闭和重启,管理员可以查看、重启、关闭所有已经创建的靶机。

优选的,所述系统设置模块包括平台信息管理子模块、镜像管理子模块和安全设置子模块,所述平台信息管理子模块用于监控管理系统信息,控制UI界面设置;所述镜像管理子模块基于docker容器对题目进行镜像管理,通过镜像的名字来实现题目和镜像对应,在前端配置题目的时候,若题目有靶机,需要补充docker镜像名字,同时管理员要在服务器中准备好此题目镜像,当用户进入此题页面的时候会看到开启靶机选项,开启时调用docker命令,使用docker up和不与服务器产生冲突的端口号,即可访问靶机;所述安全设置子模块可通过一键停止功能停止做题操作。

优选的,所述登录注册模块包括注册子模块、登录子模块和用户管理子模块,所述注册子模块主要用于新用户注册功能,通过填写个人基本信息,有邮箱、账号密码,后续管理员需后台设置邮箱服务,给用户提供找回密码的功能;所述登录子模块用于根据用户填写的用户名、密码登录,后台根据验证,两者需相互对应才可登录对应用户;所述用户管理子模块用于确认登录账号以及确认登录人员的身份信息,包括队伍子模块和成员子模块,所述队伍子模块可实现队伍信息管理、队伍人员设置以及自建队伍;所述成员子模块用于新增、修改、删除用户,还可以将普通用户设置成管理员。

所述用户管理子模块还包括权限管理子模块,用于对登录用户进行权限划分,若登录人员信息为普通用户,则该登录用户权限包括浏览网页及题目,选择并完成题目,启动动态靶机以及修改个人资料;一些题目的答案会藏在靶机之中,需要对靶机进行攻击才能拿到答案,管理员在添加此类题目的时候会事先配置好此类题目的docker镜像文件,当用户进入此类题目的做题界面会出现启动靶机的按钮,事先管理员会利用docker build命令构建好靶机镜像存于服务器中,启动靶机的过程调用的是docker up命令,会将靶机的特定端口映射到服务器的闲置端口上,如:如web题一般需要将靶机的80端口映射到服务器闲置端口上;若登录人员为管理员,则权限还包括观察平台目前的用户注册数量、所有的题目,编辑前端页面UI,还可新增页面,对普通用户进行管理,可以查看用户信息和变更用户的分类、分数的权限,调用动态靶机功能模块。

优选的,所述题目管理模块中,对于有动态靶机绑定的试题,需要提前在服务器内准备好docker镜像,在创建题目的时候选择动态靶机类题目,以创建好的题目镜像名字为索引,配置完成后,用户在浏览有动态靶机的题目时会出现启动靶机的界面。

本发明的另一个目的在于提供了一种网络攻防在线实训方法,基于所述的网络攻防在线实训OJ系统,包括以下步骤:

S1,用户通过注册登录模块登录所述网络攻防在线实训OJ系统;判断登录用户是否为管理员角色,若不是管理员,则加载前端答题界面,并进行步骤S2,若登录的是管理员角色,则会加载出进入后台管理的入口,可以进行步骤S3;

S2,普通用户可以查看目前题目的信息,访问一道题目,通过解答题目所给出的问题,提交答案即可获得对应题目的分数,可以查看目前其他用户做题获得分数的情况,可以查看自己的做题情况和信息,并可以对有限的信息进行修改;

S21,打开所有题目列表,选择对应需要做的题目,确认题目的二进制文件,确认该文件所开启的保护和位数;

S22,用ida32或ida4分析该文件,寻找漏洞点,待发现栈溢出漏洞,采用pwntool工具攻击该文件脚本;

S23,获取该文件所对应的远程主机权限,从而最终得到服务器中的flag,结束答题;

S24,用户通过系统中题目中的答案提交框提交答案,获得题目对应的分数,题目分数随着做出题目的人数的增加而减少。

S3,管理员进入后台可以查看题目的信息,包括题目id、名称、状态等信息;管理员可以增加、修改、删减题目;对于动态靶机的管理,管理员可以查看、关闭和重启任意在服务器中创建的靶机;对于用户,管理员可以修改用户信息、变更用户权限。

优选的,步骤S21中所述选择对应需要做的题目,还包括:若该题目有动态靶机,则需要开启靶机才能做题,即将调用docker up命令启动管理事先用docker build配置好的镜像,再将启动的docker虚拟机即靶机的对应服务端口映射到服务器的闲置端口上,若有附件,则需要下载附件后才能做题。

优选的,所述开启靶机采用动态靶机功能模块实现,所述动态靶机功能模块使得管理员添加题目的时候出现动态靶机选项,管理员需要事先在服务器用docker创建好题目的镜像并记录此镜像名称,在配置此题目时候需要多填此镜像名、靶机存活时间,当靶机运行超过一定的时长,后台会调用docker的命令来关闭此题目的靶机,此模块实现一道动态靶机类题目开启一个虚拟机,同时提供给用户一个IP地址和端口,供解题。

优选的,步骤S24中的所述题目分数随着做出题目的人数的增加而减少,其计算方法为:设置初始分记为initial和最低分记为minimum,在到达最低分时候解出此题的人数记为P1,此时解出此题的人数记为P2,记value(((minimum-initial)/(P1^2))*(P2^2))+initial,并向上取整value,题目此时的分数在最低分minimum和value中取得的最大值。

优选的,步骤S21还包括队伍组建过程,该队伍组建过程包括加入队伍和自建队伍,所述加入队伍过程具体包括:当用户注册成功后,填入待加入队伍的名称和邀请码来加入队伍;自建队伍过程包括:用户注册成功后,创建一个队伍,并生成队伍邀请码。

更优选的,当以队伍进行比赛时,以队伍为单位进行积分排名;每个队伍的积分包括各个成员的个人答题所获得的积分以及团队比赛所获得的积分。

本发明的有益效果是:

本发明提供了一种在线攻防的OJ实训系统及方法,该系统属于兼容性强、再开发容易度高的系统,基于技术领域区所提及的框架,开发语言大量采用python,同时将利用docker、frp技术来实现动态靶机相关功能。对于一些需要靶机的题目,可以管理员在建立好基础镜像之后,可以让用户进行答题的时候自行开启靶机;题目分数随着答出题目的人员增加而减少,可以让成员知道题目的难易程度。

附图说明

图1是实施例1中提供的在线攻防的OJ实训系统示意图;

图2是实施例1中提供的登录注册密码操作流程图;

图3是实施例2中提供的在线攻防的OJ实训方法流程示意图;

图4是实施例2中提供的用户答题流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

实施例1

本实施例提供的docker镜像为开发过程中采用的ubuntu16.04,并已经配置好dockerfile、docker-compose文件,并且提供相关依赖安装配置,部署人员只需通过pip安装request.txt文件中的依赖,便可通过docker-compose命令部署平台。故,部署平台的步骤:选择linux服务器,安装好docker、frp、python2、pip2;在项目文件中运行pip安装request.txt中文件的依赖;docker-compose对镜像文件进行build,在up;对于动态靶机服务,需要配置对应frp文件,利用docker-swarm或者直接建立docker网络的节点,让系统搭建的平台与该网络节点进行连接,后续利用动态靶机功能文件进行配置,主要填入docker主节点和服务器所在的ip地址即可配置完毕;上架题目若需要选择动态靶机题目类型,需要提前配置好带有dockerfile文件的题目,建立带有题目的基础镜像,在系统中用题目文件的名字作为索引,与题目进行绑定,若用户启动平台,管理员可以通过配置好的frp服务去后台执行docker服务,通过docker本有的设置参数,启动对应镜像为虚拟机,若多人启动相同题目,可以用此命令将题目启动于不同端口,用户就不会访问到同一个虚拟机;

本实施例中提供的在线攻防的OJ实训系统结构如图1所示,包括用户注册登录模块、系统设置模块、用户管理模块、题目管理模块、答题模块和动态靶机模块;所述用户注册管理模块用于游客注册账号以及确认人员的身份信息;所述系统设置模块用于对系统进行简易设置,如时间、是否开放注册、是否对游客隐藏系统设置的相关界面;所述用户管理模块用于管理员对用户的信息进行查看、修改、删除等操作;所述题目管理模块用于管理员对题目进行查看、修改、删除等操作;所述答题模块用于用户登录之后对题目进行答题;所述动态靶机模块用于用户对拥有动态靶机功能的题目创建对应靶机,用户可以对自己创建的靶机进行关闭和重启,管理员可以查看、重启、关闭所有已经创建的靶机。

具体的,本实施例中的所述系统设置模块包括平台信息管理子模块、镜像管理子模块和安全设置子模块,所述平台信息管理子模块用于监控管理系统信息,控制UI界面设置;所述镜像管理子模块基于docker容器对题目进行镜像管理,通过镜像的名字来实现题目和镜像对应,在前端配置题目的时候,若题目有靶机,需要补充docker镜像名字,同时管理员要在服务器中准备好此题目镜像,当用户进入此题页面的时候会看到开启靶机选项,开启时调用docker命令,使用docker up和不与服务器产生冲突的端口号,即可访问靶机;所述安全设置子模块可通过一键停止功能停止做题操作。

本实施例中的所述登录注册模块包括注册子模块、登录子模块和用户管理子模块,所述注册子模块主要用于新用户注册功能,通过填写个人基本信息,有邮箱、账号密码,后续管理员需后台设置邮箱服务,给用户提供找回密码的功能;所述登录子模块用于根据用户填写的用户名、密码登录,后台根据验证,两者需相互对应才可登录对应用户;本系统中的用户注册和登录过程中采用的密码算法原理如图2所示,将全程采用通过不可逆算法所求的值来操作,使用户的密码更加安全。

所述用户管理子模块用于确认登录账号以及确认登录人员的身份信息,包括队伍子模块和成员子模块,所述队伍子模块可实现队伍信息管理、队伍人员设置以及自建队伍;所述成员子模块用于新增、修改、删除用户,还可以将普通用户设置成管理员。

所述用户管理子模块还包括权限管理子模块,用于对登录用户进行权限划分,若登录人员信息为普通用户,则该登录用户权限包括浏览网页及题目,选择并完成题目,启动动态靶机以及修改个人资料;一些题目的答案会藏在靶机之中,需要对靶机进行攻击才能拿到答案,管理员在添加此类题目的时候会事先配置好此类题目的docker镜像文件,当用户进入此类题目的做题界面会出现启动靶机的按钮,事先管理员会利用docker build命令构建好靶机镜像存于服务器中,启动靶机的过程调用的是docker up命令,会将靶机的特定端口映射到服务器的闲置端口上,如:如web题一般需要将靶机的80端口映射到服务器闲置端口上;若登录人员为管理员,则权限还包括观察平台目前的用户注册数量、所有的题目,编辑前端页面UI,还可新增页面,对普通用户进行管理,可以查看用户信息和变更用户的分类、分数的权限,调用动态靶机功能模块。

所述题目管理模块中,对于有动态靶机绑定的试题,需要提前在服务器内准备好docker镜像,在创建题目的时候选择动态靶机类题目,以创建好的题目镜像名字为索引,配置完成后,用户在浏览有动态靶机的题目时会出现启动靶机的界面。

实施例2

本实施例提供了一种在线攻防的OJ实训方法,参照图3,包括以下步骤:

S1,用户使用登录单元通过账号和密码登录OJ实训系统,同时判断用户是否为管理员角色,加载前端用户界面,并进行步骤S2,若登录的是管理员角色,则会加载出进入后台管理的入口,可以进行步骤S3;

步骤S1中判断登录成功与否包括以下内容:

判断用户角色账号密码是否正确,只有账号和密码都正确则跳转到主界面进行答题等操作,否则提示用户名或者密码错误。

S2,普通用户可以查看目前其他用户做题获得分数的情况,可以查看目前题目的信息,访问一道题目,通过解答题目所给出的问题,提交答案即可获得对应题目的分数,可以查看自己的做题情况和信息,并可以对有限的信息进行修改,该答题过程如图4所示,具体包括以下过程:

S21,打开所有题目列表,选择对应需要做的题目,确认题目的二进制文件,确认该文件所开启的保护和位数;

S22,用ida32或ida4分析该文件,寻找漏洞点,待发现栈溢出漏洞,采用pwntool工具攻击该文件脚本;

S23,获取该文件所对应的远程主机权限,从而最终得到服务器中的flag,结束答题;

S24,用户通过系统中题目中的答案提交框提交答案,获得题目对应的分数,题目分数随着做出题目的人数的增加而减少。

S3,管理员用户除了拥有S2步骤,还可以通过后台入口,进入后台进行管理。管理员可以查看题目的信息,包括题目id、名称、状态等信息;管理员可以增加、修改、删减题目;对于动态靶机的管理,管理员可以查看、关闭和重启任意在服务器中创建的靶机;对于用户,管理员可以修改用户信息、变更用户权限;

本实施例中对于管理员才可以使用的用户管理模块和题目管理模块,管理员可以在系统后台通过可视化界面对题目和用户进行增加、修改、删除。

S4,普通用户在查看拥有动态靶机功能的题目时,可以开启靶机,并对其进行解题操作,获得答案。

S5,管理员可以查看系统的基本信息、用户信息、题目信息、运行中的靶机信息等,同时还可以对系统进行基本的设置,可以修改平台的题目、积分表、注册功能是否对游客公开,还可以短暂地关闭平台;

管理对系统可进行简易设置包括:

对于系统的前端界面,可以增加、修改logo,对于系统名称可以进行修改,对于系统的前端界面可以用HTML语言进行修改,可以开启邮箱验证(控制用户在注册完成后是否需要验证电子邮箱),对于题目、分数、用户、注册功能可以进行隐藏,对系统本身邮箱可以进行设置(用于用户忘记密码后发送对应验证码,使用户通过此手段修改密码),对时间、时区、系统的冻结(暂停用户答题)时间可以进行设置,还可以对平台进行重置。

本实施例中的步骤S21还包括队伍组建过程,该队伍组建过程包括加入队伍和自建队伍,所述加入队伍过程具体包括:当用户注册成功后,填入待加入队伍的名称和邀请码来加入队伍;自建队伍过程包括:用户注册成功后,创建一个队伍,并生成队伍邀请码。

当以队伍进行比赛时,以队伍为单位进行积分排名;每个队伍的积分包括各个成员的个人答题所获得的积分以及团队比赛所获得的积分。

本实施例中的步骤S24中的所述题目分数随着做出题目的人数的增加而减少,其计算方法为:设置初始分记为initial和最低分记为minimum,在到达最低分时候解出此题的人数记为P1,此时解出此题的人数记为P2,记value(((minimum-initial)/(P1^2))*(P2^2))+initial,并向上取整value,题目此时的分数在最低分minimum和value中取得的最大值。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:

本发明提供了一种在线攻防的OJ实训系统及方法,该系统属于兼容性强、再开发容易度高的系统,基于技术领域区所提及的框架,开发语言大量采用python,同时将利用docker、frp技术来实现动态靶机相关功能。对于一些需要靶机的题目,可以管理员在建立好基础镜像之后,可以让用户进行答题的时候自行开启靶机;题目分数随着答出题目的人员增加而减少,可以让成员知道题目的难易程度。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号