题目构建

赛题全部使用docker部署,需准备check脚本和镜像

镜像构建注意事项

1、注意web目录权限

2、注意服务是否自启动

3、修改ssh配置

4、创建flag文件并修改权限为600

这里基础镜像建议采用下面这两个,原因很简单,比较小,便于移植

ctfhub/base_web_nginx_mysql_php_56
ctfhub/base_web_nginx_mysql_php_73
docker pull ctfhub/base_web_nginx_mysql_php_56
docker run -itd --name aaaa -p 9002:80 -e "FLAG=CTFTraining{ctfhub/base_web_nginx_mysql_php_56}" ctfhub/base_web_nginx_mysql_php_56 // 启动基础镜像
docker cp xxx.zip aaaa:/var/www/html // 复制源码到镜像中
docker exec -it aaaa /bin/sh // 进入镜像
在镜像内操作,该镜像默认没有ssh服务需要手动添加
docker commit aaaa awd_xxx // 操作完毕后生成新镜像
注意生成后测试镜像是否合格
上传到dockerhub
docker login // 登录dockerhub
docker tag awd_xxx nmsldd/awd_xxx // 修改镜像标签为自己的名字
docker push nmsldd/awd_xxx:v1 // 上传镜像
打包到本地
docker save imagesid > xxx.tar // 打包到本地
zip -r xxx.zip xxx.tar // 记得压缩
docker load < xxx.tar // docker导入

由于基础镜像是alpine,这里还是简单记录一下操作

添加用户
adduser ctf
修改密码
echo -e “rootpwd\nrootpwd” | passwd ctf
安装ssh服务
apk add openssh-server
apk add openssh-client

平台构建

这里后端采用的Cardinal

前端采用Asteroid_Standalone

后端部署流程

下载代码后直接执行,根据提示创建配置即可

后面在启动时就可以直接更新配置,如果说创建新比赛的话,建议清空数据库,要不可能会存在数据上的问题

本地mysql注意要创建Cardinal数据库

wget https://github.com/vidar-team/Cardinal/releases/download/v0.7.3/Cardinal_v0.7.3_linux_amd64.tar.gz // 下载最新版
tar zxf Cardinal_v0.7.3_linux_amd64.tar.gz // 解压缩
CREATE DATABASE `cardinal` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; // mysql连接后 建立cardinal数据库
./Cardinal // 启动平台后端 第一次启动会让输入管理员账号和密码
IP:19999 // 选手登入页面
IP:19999/manager // 管理员页面

登录管理员页面如下



要组织一场比赛,主要需要配置以下内容

1、队伍管理,添加队伍

2、题目管理,添加题目

3、靶机管理,添加外部靶机,批量添加

4、flag管理,生成flag

5、公告管理,发布提示

6、配置管理,更改配置

7、账号管理,添加check账号等

功能还是挺全面的,配置起来也很简单

外部靶机和平台通信主要是用于更新flag文件,所以配置好地址的ssh账号和密码即可

前端展示

修改配置文件

配置文件路径地址 Asteroid_Data/StreamingAssets/asteroid.ini

修改接口配置为自己的

[connect]
url = ws://ip:19999/api/asteroid
image_url = http://ip:19999/api/uploads

批量启动

这里写了一个脚本

脚本实现的功能了以下功能,批量创建docker,启动docker,重置队伍靶机,清理环境。

对于不同的docker环境,其启动的命令不尽相同,所以在一些情况下需要修改generate_run_sh函数中的启动命令,修改后docker在启动后会逐步执行

docker启动时默认会映射8801-8899,2201-2299端口,如果有其他端口需要映射出来,需要修改generate_docker_sh函数内容

最后脚本会在执行目录下生产各个队伍的文件夹,同时还有pass.txt文件。

pass.txt文件内容格式为

队伍ID:ssh账户:密码
team1:ctf:925d18e2f1a984caf29ee8de890c2819

check

最后根据题目编写相对应的check脚本就好了

配置好下面参数,post请求即可
checkapi = "http://ip:8888/api/manager/checkDown"
checkapi_token = '4443d148-a2d5-4e39-a483-e0e050c883e7'

AWD比赛组织指南的更多相关文章

  1. 代码审计-四叶草杯线下awd比赛源码web2

    今晚简单来看看那天比赛的源码吧,比赛的时候还是有些慌没有好好去静下心看代码. awd给的题中的漏洞,都是那种可以快速让你利用拿到权限后得到flag的那种,特别复杂利用的一般没有. 建议先黑盒去尝试,例 ...

  2. AWD比赛常规套路

    作者:Leafer   本文属于Arctic shell原创内容计划文章,转载请注明原文地址! 比赛环境:纯净win10,最新版kali,securecrt或者WinSCP 在进入服务器后应进行的常规 ...

  3. 关于参加AWD攻防比赛心得体会

    今天只是简单写下心得和体会 平时工作很忙 留给学习的时间更加珍少宝贵. 重点说下第二天的攻防比赛吧  . 三波web题 .涉及jsp,php,py. 前期我们打的很猛.第一波jsp的题看到有首页预留后 ...

  4. AWD攻防工具脚本汇总(一)

    最近工作很忙 今天抽空准备下AWD比赛得攻防工具和脚本 以下只是常用 希望下周不被吊锤~~ 后续整理后想抽空写成一个攻击框架汇总放github~~ 这里从各种情景和需求中去总结工具和脚本的使用   情 ...

  5. 线下AWD平台搭建以及一些相关问题解决

    线下AWD平台搭建以及一些相关问题解决 一.前言 文章首发于tools,因为发现了一些新问题但是没法改,所以在博客进行补充. 因为很多人可能没有机会参加线下的AWD比赛,导致缺乏这方面经验,比如我参加 ...

  6. AWD不死马与克制方法

    一个简单的不死马如: <?php ignore_user_abort(true); set_time_limit(0); unlink(__FILE__); $file = '.3.php'; ...

  7. Java 编程入门(词汇表)

    抽象类(abstract class):抽象类不能创建对象,主要用来创建子类.Java中的抽象类使用 abstract 修饰符定义. 抽象数据类型(abstract data type ADT):抽象 ...

  8. Java编程入门(词汇表)

    抽象类(abstract class):抽象类不能创建对象,主要用来创建子类.Java中的抽象类使用 abstract 修饰符定义. 抽象数据类型(abstract data type ADT):抽象 ...

  9. Dream team: Stacking for combining classifiers梦之队:组合分类器

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

随机推荐

  1. nginx 基本配置

    server { listen 80; server_name 域名; #access_log /var/log/nginx/admin.log; index index.html index.htm ...

  2. 『心善渊』Selenium3.0基础 — 27、unittest跳过测试的使用

    目录 1.什么是跳过测试 2.常用的跳过测试方法和装饰器 3.跳过测试示例 4.TestCase.skipTest()方法 1.什么是跳过测试 当测试用例写完后,有些模块有改动时候,会影响到部分用例的 ...

  3. c语言:大纲

    C语言大纲:1.C语言程序设计知识(1)基本数据类型与简单程序设计(2)分支程序设计(3)循环程序设计(4)数组(5)函数(6)结构体(7)指针2.C语言程序设计(1)顺序结构的程序设计(2)分支结构 ...

  4. Java程序设计当堂测试 9.20

    /*Java当堂测试 ATM机模拟系统由于学习的知识有限,不能完成所有课上项目,文件的应用没有完成,汇款转账功能也没有写,一些要求该退出的地方也没有写,基本功能还算完善*/ 1 package acc ...

  5. [刘阳Java]_Web前端入门级练习_迅雷首页第一屏设计

    今天接着上一篇文章<Web前端入门级练习_迅雷官宣网设计>正式开始迅雷首页第一版的设计.如果完成,则最终的效果图如下 第一步:先完成logo部分的设计 logo设计,我们会使用CSS的定位 ...

  6. [刘阳Java]_Spring AOP基于XML配置介绍_第9讲

    基于注解配置的Spring AOP固然简单,但是这节我们会给大家介绍基于XML配置的AOP是如何应用的.为什么这么说了,因为后面我们还会介绍到Spring对Dao操作的事务管理(基于AOP的XML文件 ...

  7. 替代Infinity绝佳的自主开发chrome插件

    最近闲来无事在好朋(da)友(shen)的帮助下开发一个chrome插件,目的是为了替换infinity主页插件, 当然在此也推荐一波infinity确实不错,界面和易用性都是非常好用的水准了. 主页 ...

  8. 网络损伤仪WANsim中的时延的不同模型

    网络损伤仪WANsim中的3种时延模型 时延指的是报文从网络的一端到达另一端所花费的时间. 网络损伤仪WANsim中为用户提供了3种时延损伤的模型.常量模型.均匀分布.正态分布. 这3种模型按照各自的 ...

  9. 大数据学习(12)—— Hive Server2服务

    什么是Hive Server2 上一篇我们启动了hive --service metastore服务,可以通过命令行来访问hive服务,但是它不支持多客户端同时访问,参见官网说明:HiveServer ...

  10. TCP三次握手、四次挥手理解

    tcp三次握手建立连接第一次握手 客户端发送给服务器一段连接请求报文,等待服务器回应 第二次握手 服务器收到报文,并发送给客户端一个确认报文,等待客户端回应 第三次握手 客户端收到新报文 ,再发送给服 ...