【Cardinal的AWD攻防平台搭建】

AWD-platform平时练习还行,但攻击页面太low了 。在网上找了找,Cardinal不错。
现记录下下载:

安装Cardinal

Releases · 05sec/Cardinal (github.com)
在这里插入图片描述
我用的kali,所以选择linux_amd64.tar.gz下载。创建Cardinal目录(良好习惯,不然解压一堆),执行:chmod +x Cardinal
然后进入Cardinal目录解压。

tar -zxvf Cardinal.tar.gz

然后./Cardinal
第一次执行会提示用中文还是英文,比赛开始的起始时间等。需要注意的是,数据库账号、密码、表名要记住。生成的配置文件在conf下的Cardinal.toml,是这个样子:
在这里插入图片描述
kali的mysql数据库默认不启动。要启动service mysql restart

然后添加账号、密码、数据库
进入数据库
mysql -u root -p
创建test用户和密码

CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

创建testdb数据库
create database testdb;
再重新启动./Cardinal
访问:htttp://ip:19999/manager
(队伍访问:htttp://ip:19999)
用test\test进入。可设置一系列的参数。

启动awd-platform

启动AWD-platform,利用里面的赛题搭建靶场。
需要注意的是,默认的CTF用户,权限不够。无法更新(写入)flag。需要就入每个虚拟机中更新root密码。
先执行 docker ps

在这里插入图片描述
可以看到三支队伍的容器id号。
使用docker stop 命令停掉flag_server和check_server。比赛用的是Cardinal的flag.

docker stop bf2f813823f1
docker stop 33004dc9321d

在这里插入图片描述
改了root的密码,但用ssh的root账号登录不了。查看系统,是sshd的配置有问题。
sudo vi /etc/ssh/sshd_config
改成这个样子
在这里插入图片描述
再重启sshd服务:/etc/init.d/ssh restart
三个队伍都改好。

显示大屏

要B格,就要上大屏。
同样下载Asterid
在这里插入图片描述
下载windows版就行。
然后修改StandaloneWindows64\Asteroid_Data\StreamingAssets 的asteroid.ini文件。修改Ip地址为cardinal的ip的地址即可。
在这里插入图片描述
双击asteroid.exe,开启美妙时刻!

在这里插入图片描述

在这里插入图片描述

一个awd攻防比赛的裁判平台。 版本:beta v2.0 开发语言:python3 + django 平台分为两个部分 裁判机 靶机 通过特定接口,来实现靶机flag与服务器的通信 搭建流程 裁判机 安装所需环境 裁判机:python3+django 全局搜索woshiguanliyuan,并修改为随机字符串,此处为管理平台地址 /untitled/urls.py path('woshiguanliyuan/',views.admin,name='admin'), path('woshiguanliyuan/table/',views.admin_table,name='admin_table'), /app/views.py if 'woshiguanliyuan' not in request.META['HTTP_REFERER']: 第31和47换为你的目录 列:("/var/www/awd_platform/app/qwe.txt","a") 修改app/management/commands/init.py,添加用户 #['用户名','用户靶机token','用户靶机token'] user=[ ['123456','FF9C92C7SDFABB71566F73422C','FF9C92C7SDFABB71566F73422C'], ['aaabbb','311F8A54SV9K6B5FF4EAB20536','311F8A54SV9K6B5FF4EAB20536'] ] 修改/app/views.py第行d89f33b18ba2a74cd38499e587cb9dcd为靶机中设置的admin_token值的md5 if('d89f33b18ba2a74cd38499e587cb9dcd'==hl.hexdigest()): 运行 python3 manage.py init python3 manage.py manage.py runserver --insecure 靶机 安装所需环境 靶机:python+requests 修改send_flag.py参数,并将其放入靶机,设权限700。 靶机 sudo python send_flag.py。 靶机生成flag脚本,send_flag.py import requests import time import random import string import hashlib token='woshiwuxudong' # 红队 baji='311F8A54SV9K6B5FF4EAB20536' def getFlag(): #return ''.join(random.sample(string.ascii_letters + string.digits, 48)) m = hashlib.md5(''.join(random.sample(string.ascii_letters + string.digits, 48)).encode(encoding="utf-8")).hexdigest() return m while(1): f=open('/flag','w') flag=getFlag() f.write(flag) data={ 'flag':flag, 'token':token, 'baji':baji, } r=requests.post('http://127.0.0.1/caipanflag/',data=data) print(r.text) f.close() time.sleep(300) 重要须知 更新作者基础上: 1.增加flag验证一次性失效性,使得每个用户都并且仅可以提交一次flag 2.增加排名情况 3.flag改为MD5 4.增加丢失flag一轮扣100分
### 如何搭建AWD(Attack with Defense)靶场环境 #### 一、AWD 靶场概述 AWD(Attack With Defense),即攻防兼备模式,是一种常见的网络安全竞赛形式。在这种模式下,参赛者不仅需要保护自己的服务不被攻击,还需要尝试突破对手的服务以获得分数。为了支持这种类型的竞赛,通常会使用专门开发的比赛平台,例如 Cardinal[^1]。 #### 二、所需工具与软件 构建 AWD 靶场的核心组件包括但不限于以下几项: - **Cardinal 平台**:这是一个基于 Go 的开源项目,专为 CTF 和 AWD 类型的比赛设计。 - **Docker 容器**:用于隔离各个队伍的运行环境,确保每支队伍拥有独立的服务实例。 - **Linux 系统**:推荐 Ubuntu 或 CentOS 作为服务器操作系统,便于 Docker 及其他依赖的安装。 #### 三、具体实施步骤说明 以下是关于如何设置 AWD 靶场的关键环节: ##### 1. 更新系统并准备基础环境 在正式部署之前,需先完成系统的初始化工作。这一步骤主要涉及操作系统的更新以及必要包管理工具的安装。例如,在 Debian/Ubuntu 上可以通过如下命令实现: ```bash apt-get update && apt-get upgrade -y ``` 接着安装 Docker CE 版本,这是后续创建动态或静态容器的基础条件之一。需要注意的是,由于网络状况不稳定可能导致初次执行失败,因此建议多次重试直至成功为止[^3]: ```bash apt-get install docker-ce -y ``` ##### 2. 下载与配置 Cardinal 比赛框架 访问官方仓库地址下载最新版本源码文件,并按照文档指引逐步调整参数设定满足实际需求。一般情况下,该过程包含以下几个方面的工作内容: - 克隆 Git 库到本地目录; - 修改默认端口号及其他关联选项以便适配现有硬件资源情况; - 启动后台进程监听来自客户端提交的数据请求。 ##### 3. 构建静态 Flag 提交机制 对于某些特定场景下的题目设计来说,采用固定不变的标志字符串可能是更为合适的选择。这种方式特别适用于那些希望考察选手能否发现隐藏缺陷或者解决既定难题的情况之下。此时可通过编写脚本来自动化生成这些唯一的标识符存放在相应的路径位置供后续检验之用[^2]: 假设我们有一个名为 `generate_flags.py` 脚本用来批量生产随机字符组成的 flags 文件夹结构如下所示: ``` flags/ ├── team1.flag ├── team2.flag ... └── teamN.flag ``` 那么对应的 Python 实现逻辑大致如此这般模样呈现出来给大家参考学习一下吧!当然也可以根据自己喜好选用别的编程语言来达成相同目的哦~ ```python import os import secrets def generate_flag(): alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' return ''.join(secrets.choice(alphabet) for _ in range(32)) if __name__ == '__main__': num_teams = int(input("Enter number of teams: ")) base_dir = './flags/' if not os.path.exists(base_dir): os.makedirs(base_dir) for i in range(1, num_teams + 1): flag_content = generate_flag() file_path = f'{base_dir}team{i}.flag' with open(file_path, 'w') as f: f.write(flag_content) print(f'Generated {file_path}: {flag_content}') ``` ##### 4. 测试整体流程连贯性 最后但同样重要的一环就是进行全面的功能检测确认无误之后再投入使用阶段当中去啦~可以从不同角度出发模拟真实比赛期间可能出现的各种极端情形从而提前发现问题所在之处加以改进优化提高稳定性表现效果最佳! --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值