AWD的攻击和防御手段

一、AWD相关介绍

AWD(Attack With Defence)是 CTF 线下赛中最接近真实攻防场景、观赏性和对抗性最强的赛制之一。

赛制本质

人人对抗:所有战队互为攻击者与防守者。

零和记分:你拿到的每一分都是别人的失分,总积分恒定。

轮次刷新:每 1~10 分钟一轮,Flag 自动更新,防止"一洞吃全场"。

赛前组委会发布的信息

|------------|---------------|-------------------------------------|
| 项目 | 常见形式 | 说明 |
| 靶机 GameBox | 2~3台Linux虚拟机 | 已预装 Web / Pwn / 中间件服务,内含 1 个或 N 个漏洞 |
| 初始账号 | 低权限ssh用户 | 通常非root,需要自己提权 |
| 拓扑图 | CIDR 网段列表 | 告诉你哪些 IP 是别人的靶机,可扫描 |
| 检验脚本 | check service | 裁判脚本定期访问你的服务,宕机就扣分 |

计分规则(常见版本)

起始分1000/5000分;

攻击:提交一次正确 Flag +50 分,被攻击方 −50 分;

防守:裁判脚本访问失败 −50 分,且扣分平分给 check 正常的队伍;

服务离线超过 2 轮直接判负出局。

时间线(典型4~8小时比赛)

0:00  发放靶机 → 0:15  网络连通测试 → 0:30  正式开始 → 每 5 min 一轮 → 结束 30 min 前停止 Flag 更新 → 颁奖 / 复盘。

作战分工

角色 核心任务 常用工具
攻击手 挖洞、批量打靶、维护攻击脚本 sqlmap、nmap、Burp、自写 Python 脚本
防御手 修洞、写 WAF、监控告警 D 盾、Seay、自写 iptables/WAF、auditd
机动 流量取证、逆向、二进制补丁 IDA、Ghidra、patch 工具
指挥 看大屏记分、分配优先级、盯 check 脚本 纸质白板 + 微信/飞书群

高频漏洞清单

Web-AWD:SQL 注入、文件上传、任意文件下载、反序列化、SSTI、RCE 。

PWN-AWD:栈溢出、格式化字符串、UAF、整数溢出,配合 NX/ASLR/Canary 绕过

典型犯规/扣分红线

打宕对方服务(扣分甚至判负);

用 DoS、ARP 欺骗等影响网络层;

私自修改 check 脚本或与裁判机通信。

赛后复盘3步走

1、把流量 pcap、源码、补丁、exp 打包备份

2、对比官方 writeup,列出"发现-未利用"漏洞

3、进行总结:失分点、得分点、工具链改进,下次赛前 10 分钟可重温

二、平台搭建

ubuntu虚拟机搭建

进行AWD时需要一台独立虚拟机,这里搭建ubuntu

在VMware来进行安装Ubuntu虚拟机

Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

选择了20.04的版本

下载到自己的目录然后在VMware里面安装就好了。

具体的安装过程我就不写了,和安装kali那些一样,照着博客来就行,这里有一篇比较详细:

VMware虚拟机安装Ubuntu20.04详细教程(配图)_vmware安装ubuntu20.04-CSDN博客

然后我这里安装好以后 ctrl+alt+T 打开终端

可以查看虚拟机信息

然后进行换源

在这之前先备份一下

可以看到 sources.list.bak 文件就是备份好的

然后 sudo vim /etc/apt/sources.list进入换源

如果 vim 命令无效安装vim 即可

复制代码
sudo apt install vim

再执行就可以进入

但是我的还是显示 vim 不可用

检查一下是不是网络问题

网络没问题,能连上

复制代码
ping -c 4 8.8.8.8

在ubuntu终端中执行这个命令

能收到 4 个 64 bytes from ... icmp_seq=...就说明有网;

出现Network is unreachable / 100 % packet loss 就说明没网

既然能上网那就说明系统被精简成了Docker / 最小化 Ubuntu 镜像

这样大多数 缺 apt、缺 vim,甚至连 sudo 都没有。

那就用自带的 microdnf / dnf / apt-get

某些最小镜像里把 apt 软链接删了,但底层 apt-get 还在;试试:

复制代码
which apt-get  //确认 apt-get 存不存在

这个命令还是需要 sudo su 提权

然后 更新并安装

复制代码
apt-get update

apt-get install -y vim

如果你的容器用的是 Ubuntu 22.04 Minimal ,默认包管理器其实是 snap,那就

复制代码
snap install vim --classic

结果发现还是不行

只能用终极办法进去了

复制代码
vi /etc/apt/sources.list

然后终于是进去了

gg跳到开头,再dG删除所有文件

再按 i 进入编辑模式粘贴镜像源

这里有一些可供选择:[ubuntu]ubuntu22.04默认源和国内源_ubuntu22.04源-CSDN博客

用阿里的吧

ubuntu 22.04 LTS(jammy)

复制代码
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
 
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
 
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
 
# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
 
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

粘贴好镜像源后按Esc键再 :wq 保存退出