题目构建

赛题全部使用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. Java实验项目六——使用DAO模式实现对职工表的操作

    Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...

  2. Thymeleaf模板引擎语法

    th:text    用于显示值 th:object      接收后台传来的对象 th:action      提交表单 th:value       绑定值 th:field         绑定 ...

  3. 简单学习java内存马

    看了雷石的内存马深入浅出,就心血来潮看了看,由于本人java贼菜就不介绍原理了,本文有关知识都贴链接吧 前置知识 本次主要看的是tomcat的内存马,所以前置知识有下列 1.tomcat结构,tomc ...

  4. 2021最新WordPress安装教程(二):安装PHP和MySQL

    这是 2021最新WordPress安装教程系列的第二篇文章,前一篇文章< 2021最新WordPress安装教程(一):Centos7安装Apache>已经完整的介绍了如何在Centos ...

  5. vue 快速入门 系列 —— vue loader 扩展

    其他章节请看: vue 快速入门 系列 vue loader 扩展 在vue loader一文中,我们学会了从零搭建一个简单的,用于单文件组件开发的脚手架.本篇将在此基础上继续引入一些常用的库:vue ...

  6. 【动画消消乐】HTML+CSS 自定义加载动画 064(currentColor的妙用!)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...

  7. Java程序员必学知识点

    JVM无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于线 ...

  8. java 利用Calendar进行日期更改

    //建立1个日期实例 Date tomorrow= new Date(); //获取今天日期 Date nowDate = Calendar.getInstance().getTime(); // 构 ...

  9. Python基础之读写xml总结

    参考文章:https://blog.csdn.net/weixin_42749767/article/details/82770563 先介绍xml.dom.minidom包,有一个读写的例子 rea ...

  10. Django模板中变量的运算

    在django中的模板下我们知道变量使用{{xxx}}来呈现,可是当出现两个变量进行运算怎么处理那? #加法: {{value|add:value2}} #返回的结果是value+value2的值,假 ...