AWD新手避坑实录:从平台搭建、Check脚本调试到靶机访问的完整排错指南

📅 2026/7/3 9:19:29 👁️ 阅读次数 📝 编程学习
AWD新手避坑实录:从平台搭建、Check脚本调试到靶机访问的完整排错指南

AWD新手避坑实录:从平台搭建到实战调试的完整排错指南

第一次接触AWD(Attack With Defense)攻防对抗训练时,很多新手会被各种技术细节绊住脚步。本文将从实战角度出发,系统梳理搭建zhl2008/awd-platform过程中可能遇到的典型问题,并提供具体的诊断方法和修复方案。

1. 环境准备阶段的常见陷阱

在开始搭建AWD平台之前,确保基础环境配置正确至关重要。许多问题都源于这个阶段的疏忽。

1.1 Docker安装与配置问题

权限不足错误是最常见的初始障碍。当执行docker命令时出现"Got permission denied"提示,说明当前用户没有加入docker用户组。解决方法:

# 将当前用户加入docker组 sudo usermod -aG docker $USER # 重新登录使更改生效 newgrp docker

镜像拉取速度慢是另一个痛点。除了配置阿里云镜像加速器外,还可以尝试:

# 查看当前配置的镜像源 docker info | grep -i mirror # 临时使用特定镜像源拉取 docker pull --registry-mirror=https://<your-mirror>.mirror.aliyuncs.com zhl2008/web_14.04

常见错误对照表:

错误现象可能原因解决方案
Cannot connect to the Docker daemonDocker服务未启动sudo systemctl start docker
No space left on device磁盘空间不足清理旧镜像或扩容磁盘
TLS handshake timeout网络连接问题检查代理设置或更换网络环境

1.2 系统依赖缺失

AWD平台运行需要一些基础依赖包。如果遇到脚本执行失败,首先检查:

# 安装基础依赖 sudo apt-get update && sudo apt-get install -y \ python3 \ python3-pip \ git \ net-tools

提示:在Kali Linux等安全导向的发行版中,某些网络工具可能需要手动安装。

2. 平台搭建过程中的典型错误

克隆仓库和启动容器时,新手常会遇到各种意外情况。

2.1 仓库克隆与文件权限

当使用git clone命令时,可能会遇到:

# 如果直接克隆失败,可以尝试浅克隆 git clone --depth 1 https://github.com/zhl2008/awd-platform.git # 或者通过SSH方式(需配置GitHub密钥) git clone git@github.com:zhl2008/awd-platform.git

文件权限问题可能导致后续脚本无法执行:

# 确保脚本有执行权限 chmod +x *.py # 检查文件所有权 ls -la

2.2 镜像拉取与重命名

原始镜像zhl2008/web_14.04拉取后,重命名步骤常被忽略:

# 查看已拉取的镜像 docker images # 正确的重命名方式 docker tag zhl2008/web_14.04 web_14.04 # 验证改名是否成功 docker images | grep web_14.04

如果遇到镜像拉取失败,可以尝试:

  1. 清理旧镜像:docker system prune -a
  2. 更换网络环境
  3. 手动下载镜像文件并导入

3. 平台启动与比赛创建的排错

比赛创建阶段的问题往往与端口冲突和配置错误相关。

3.1 端口冲突排查

使用以下命令检查端口占用情况:

# 查看8800-8900端口占用 netstat -tulnp | grep -E '880[0-9]|890[0-9]' # 或者使用lsof lsof -i :8801

如果发现端口冲突,有两种解决方案:

  1. 停止占用端口的进程
  2. 修改AWD平台的端口范围配置

3.2 比赛创建失败分析

batch.pystart.py执行失败时:

# 带调试信息运行 python -v batch.py web_yunnan_simple 10 # 检查依赖库 pip list | grep -E 'flask|requests'

常见错误场景:

  • 缺少Python依赖:pip install -r requirements.txt
  • 配置文件路径错误:检查awd-platform目录结构
  • 权限不足:确保对比赛目录有读写权限

4. Check脚本调试与靶机访问

Check脚本和靶机连接是AWD训练的核心环节,也是最容易出问题的部分。

4.1 Check脚本常见问题

调试Check脚本时,重点关注:

# 在check.py中添加调试输出 print("[DEBUG] Flag value:", flag) # 检查HTTP请求响应 print("Response status:", response.status_code) print("Response content:", response.text)

典型错误处理:

  1. 连接超时:检查靶机是否正常启动
  2. Flag验证失败:确认Flag生成逻辑
  3. 权限问题:确保脚本有足够权限访问靶机

4.2 靶机SSH连接问题

当无法通过SSH连接靶机时:

# 检查SSH服务状态 docker exec -it <container_id> service ssh status # 测试端口连通性 nc -zv <host> 2201

连接参数参考:

参数值示例说明
主机localhost或服务器IP
端口2201对应队伍号
用户名root默认账户
密码见pass.txt注意文件路径

注意:如果使用Xshell等客户端,确保没有启用"仅使用SSHv2"选项,因为旧版镜像可能只支持SSHv1。

5. 进阶问题与性能优化

当基础功能正常运行后,还需要关注一些进阶问题。

5.1 资源监控与调优

查看容器资源使用情况:

# 实时监控容器资源 docker stats # 查看单个容器详情 docker inspect <container_id>

优化建议:

  1. 限制容器内存使用:docker run -m 512m
  2. 调整CPU优先级:--cpu-shares=512
  3. 定期清理无用容器和镜像

5.2 日志收集与分析

配置集中日志收集:

# 查看容器日志 docker logs -f <container_id> # 导出日志到文件 docker logs <container_id> > container.log

关键日志位置:

  • AWD平台日志:logs/目录
  • Check脚本输出:直接打印到控制台
  • 靶机系统日志:/var/log/目录

6. 实战中的经验技巧

经过多次实战测试,总结出以下实用技巧:

  1. 批量操作命令:使用docker-compose管理多个容器
  2. 快速重置环境:编写自动化清理脚本
  3. 网络隔离:为每场比赛创建独立的Docker网络
  4. 备份配置:定期导出容器快照
# 示例:快速重置脚本 #!/bin/bash docker stop $(docker ps -aq) docker rm $(docker ps -aq) docker network prune -f

在真实比赛环境中,建议提前准备好以下检查清单:

  • [ ] 所有依赖包版本确认
  • [ ] 网络端口规划表
  • [ ] 应急恢复方案
  • [ ] 性能监控工具部署

遇到特别棘手的问题时,可以尝试在隔离环境中复现问题,逐步排除变量。例如创建一个干净的测试容器:

docker run -it --rm ubuntu:14.04 bash