欢迎光临
我们一直在努力

云服务器AWD平台搭建

开学后实验室来了几个新同学,在线上CTF方面大家一直在持续学习,但awd模式的CTF我们练习并不多,所以准备搭建一个AWD平台用于实验室成员的线下赛攻防练习。

最开始的是防灾科技大学的线下AWD靶场:

但是靶场没有计分板和组队显示等功能,又找了一下:

腾讯云服务器没有FQ,从github上面拉取下来有495MB,本来想从本地电脑上下载后上传到云服务器上使用 unzip 命令进行解压,但 unzip 的速度也很慢,重新寻找解决办法:

如果只是为了clone加速,完成到第四步就可以了:

我的码云拉取地址在:

接着在云服务器上面使用 git clone

现在的速度就很快了:

花三十秒的时间下载完毕。

目录中有AWD线下环境手册文档,但是在搭建的时候还是会有很多不完善的地方,综合网上的多篇博客共同搭建并优化。

AWD环境中的机器按照功能分为几种类型:

  • check_Server:

    服务检查服务器,用于判定选手维护的服务是否可用,如果不可用,则会扣除相应的分数,不开启任何端口,需要与flag服务器通信

    简单来说这台机器的作用就是检查靶机宕机没有

  • Flag_Server:

    选手提交flag的服务器,并存储选手的分数,开启80端口

    简单来说这台机器就是获取到flag后的提交对象,用于加分

  • Web_Server:

    选手连接的服务器,选手需要对其进行维护,并尝试攻击其他队伍的机器,通常开启80端口,22端口,并将端口映射到主机。

    这个就是我们每个队伍所要操作的机器。

比赛逻辑拓补:

云服务器首先安装docker,有很多师傅写过安装docker的文章,跳过这一步。

接着下载镜像

接着按照参考文章里面的:

所以我们将镜像的名字修改:

接着我们按照文档里面来进行操作:

后面的数字是靶机的数量,也就是参赛队伍的数量,我们先复制所有队伍的比赛文件夹和启动比赛(这里启动的是2个参赛队):

这里使用的靶机是 web_yunnan_simple ,至此,靶机就已经可以访问了,因为是在一个服务器上运行了多个docker,靶机的端口映射规则为:

  1. team1 ---- 8801

  2. team3 ---- 8802

  3. team3 ---- 8803

  4. ....以此类推

如图:

各个靶机的ssh密码在目录文件夹下的pass.txt文件中,如图

其ssh端口映射规则为:

  1. team1 ---- 2201

  2. team2 ---- 2202

  3. team3 ---- 2203

  4. ....以此类推

但是我们还没有启动 check 脚本,而项目中原来的check脚本是不能用的,我们需要进行一些修改,这个规则要根据自己的环镜自己编写,总体思路就是判断页面是否存在,存在就加一分,不存在就减一分

网上有修改过后的 check 脚本,同时可以看到 flag-server 和 check-server 所映射的端口

使用大佬们的check.py脚本

按照文档启动check服务

使用的腾讯云服务器,这一步的时候出错了

连接超时,查看 check.py 源代码

运行的是这一段

while循环调用,一段时间延迟后进行服务可用性的检查,延迟时间由sleep_time决定

get_score() 函数报错,查看报错行:

调用了自写页面请求函数 http

而 flag_server 为全局变量:

其靶机IP在host.lists文件中,ssh链接,查看其中一台靶机的IP

可以看到云服务器上靶机的内网IP实际上为 172.18.0.2,所以才会报错超时。

修改 flag_server

修改host.lists文件

重新启动并进入容器:

可以看到现在 check已经正常了,但是host.lists文件是自动生成的,为了避免每次都修改,我们需要修改其自动化生成的脚本

简单寻找了一下,初始化文件在start.py里面

如图,host.lists文件写入的IP根据我们的情况修改为 172.18.0

 

命令清理环境重新启动服务,查看是否正常启动

现在check裁判机就正常了

此外需要注意的是:

检测页面是否存活是在check.py中的 check类中,对于不同的环境,我们需要编写不同的类方法来进行检测服务是否宕机

这里面只写了index_check函数,有python功底的朋友对于不同的CMS可以进行每个页面的check。

 

该AWD平台另一个问题是可以无限交flag,即一个flag可以无限刷分,详情和修改方法参考:

个人感觉修改方法不是很优雅hhh,因为需要自己提前去运行该脚本,这段时间有空想想其他的解决办法,脚本如下:

另外,计分板在 IP:8080/score.txt中,界面不是很好看

使用夜莫离大佬的界面修改之

密码:cvdn

修改过程为:

计分板文件拷贝至awd-platform下的flag_server文件夹下。要注意将文件score.txt与result.txt文件权限调至777,这样才能刷新出分值。

另外部分博客说的是修改 scorecard.php文件,下载上面的百度网盘文件后,发现其文件内容为:

应该是夜莫离后面又将scorecard.php改为了index.php,所以我们修改index.php中的IP地址

想要查看各队得分情况直接访问 IP:8080即可

可以看到因为只有三个队伍,所以这里只有前三个队伍有分数,为0,其余三个队伍是没有分数的,不知道如果开启了超过六个队伍,分数板会变成什么样子。

至此AWD平台安装完成。

该AWD平台题目环境较多,虽然安装的时候问题比较多,但都是能够克服的,尽管有无限刷分的bug,但是瑕不掩瑜,应该是开源AWD平台中最好的一个(很多没有bug的平台,题目环境又太少了)。

自己也想写一个AWD平台hhh,希望能够自带十道以上题目环境,一键部署,同时少量bug不影响正常使用,支持NPC队伍,以及有代码功底的使用者,能够自己快速添加CMS题目环境进来,扩展题目种类。这样就能够方便很多因为各种原因不能进入线下的学校来进行AWD的练习了。

 

做技术的hack心态加上开放共进的态度是成长和越过高山幽谷的秘籍

 

参考链接:

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《云服务器AWD平台搭建》
文章链接:https://www.456zj.com/3063.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址