首页/新闻资讯/正文详情

Bugku-AWD专版自动化攻击框架解析:从流水线设计到实战避坑

发布时间:2026/9/25 13:02:12 来源:云帆数科 栏目:资讯中心
Bugku-AWD专版自动化攻击框架解析:从流水线设计到实战避坑
简介专为AWDAttack With Defense比赛打造的自动化攻击框架基于YML配置文件驱动面向参赛队伍与安全研究人员可将漏洞利用、命令执行、数据回传、内存马注入等攻防动作流程化执行有效降低比赛中手动编写脚本与切换工具的门槛让选手更专注于攻击策略的编排与临场调整。压缩包共66个文件以Python生态为主包含18个py源码和36个pyc预编译字节码便于直接运行与二次开发另附5个XML配置、数据库、项目说明和示意图整体仅1.03MB轻量易部署。目前已有944人学习/下载适合在赛前快速熟悉自动化攻防框架的搭建与定制。资源内提供了AttackCore、SshAck、BehinderAck、MemShell等模块实现以及YML策略模板、日志数据库和README说明既可一键执行既定攻击流程也能按需编写自定义模块覆盖从攻击编排、条件分支到定时任务的完整流程为AWD实战提供了可复用的策略框架和调试依据。1. Bugku-AWD专版为什么别人连睡两轮还能稳定拿分AWDAttack With Defense最磨人的不是对面的攻击有多猛而是自己的节奏经常被琐碎操作打断。刚拿到一台靶机的shell还没来得及读flag裁判页已经被别人提交到风控想回头补自己站点的后门对方早把你埋的雷翻出来打穿了你。Bugku-AWD专版这个自动化攻击框架就是把这类重复机械动作收拢成一条可配置流水线连接目标、执行命令、读取flag、自动提交全程不需要人盯着终端。它适合两类人一类是刚接触AWD的新手可以用它把注意力放在读题和策略上另一类是已经有一堆小工具、想统一管理的老手拿它当攻防对抗的调度底座。2. 先拆框架再谈实战目录、配置与Awd.db的数据流拿到这份zip之后我建议先别急着跑花二十分钟把目录读一遍。这个框架值钱的地方不在某个利用脚本而在它的流水线设计连接器、执行器、提交器三层分离所有操作最后落到一个sqlite数据库里。看懂这个结构后面改配置和排错都会快很多。2.1 一张表理清模块职责哪个文件是连接器哪个是提取器展开解压后的目录核心代码都在code/和config/下我按自己读代码的习惯整理了一张职责表文件路径职责定位start.py入口脚本读取配置、初始化各模块、拉起主循环code/AutoAck.py自动提取器从任务队列取结果并提交flagcode/BehinderAck.py基于冰蝎Behinder的shell连接器code/SshAck.pySSH连接器内置口令字典的弱口令检测code/RecvCmd.py命令接收与回显处理负责远程执行结果解析code/MemShell.py内存马相关模块默认场景下很少启用code/AttackCore.py攻击核心逻辑连接器与提取器之间的调度config/SimpleConfig.py主配置目标IP、提交地址、字典路径全在这db/ReqFlagServer.py本地flag提交服务用于离线调试提交链路Awd.dbsqlite数据库所有攻击、提交、报错日志的落库点从命名习惯能看出作者的思路凡是带Ack后缀的类都是“连接器”只负责打通一条到目标的通道AutoAck是唯一跟外部交互的出口它不关心shell是怎么来的只关心能不能把flag送到裁判服务器。main.py和main1.py像是开发期留下的调试副本比赛环境直接用start.py就够了。2.2 配置层决定了攻击节奏连接、执行、提交怎么串标题里写着 YML但当前版本里没有显式的.yml文件——作者把配置直接写进了config/SimpleConfig.py的类属性里。这种写法在赛用工具里很常见改起来比YAML配置文件更顺手尤其是比赛间隙需要快速换了目标IP的时候。配置的核心逻辑仍然是一组键值对如果你拿到的是拆出来.yml的版本只是格式不同字段含义完全一致。# config/SimpleConfig.py 关键配置示意 class SimpleConfig: # 目标靶机AWD比赛中每轮会换一批IP target_ip 192.168.1.11 admin_path /admin/login.php # 冰蝎连接器的密钥必须与靶机上马时写入的key一致 behinder_key rebeyond # SSH弱口令字典路径比赛现场可临时替换成自己整理的 ssh_user_dict dict/user.txt ssh_pass_dict dict/pass.txt # flag提交地址按裁判规则填写注意是http还是https flag_submit_url http://192.168.1.1/flag # 提交时是否自动包一层 flag{} 格式 flag_wrap True # 两轮提交之间的间隔秒数太密会被裁判接口限流 submit_interval 3这些字段里最容易翻车的是flag_wrap。有些比赛裁判接口要求提交裸hash有些要求带flag{}前缀提交前必须确认赛规。submit_interval也别设太激进曾经有队伍因为1秒提交一次被裁判接口直接封了IP整个队伍瞬间失去提交资格。2.3 数据从靶机到Awd.db的完整链路先用sqlite看一眼数据库结构能大概知道系统记录了什么sqlite3 Awd.db .schema常见的记录表有三类连接日志表、flag提交表、异常报错表。连接日志记录每一个shell从建立到断开的事件flag提交表保存每次提交的时间、目标IP、返回码异常表则把超时、拒绝连接、响应非JSON这类情况全部收进去。比赛结束后复盘直接查这三张表就能还原整场攻防的时间线。一次完整的取flag链路是SshAck或BehinderAck先建立连接器拿到命令执行能力RecvCmd把远程执行的读取命令比如cat /flag发过去并等待回显回显里的flag字符串被提取出来放进内存队列AutoAck从队列里取数据按flag_submit_url提交服务器返回结果后写入Awd.db。中间任何一环断了问题都能很快定位——连接超时看Ack层提交失败看AutoAck层日志错乱看数据库。3. 跑通第一轮攻击环境搭建、改配置与第一次get flag理论讲完进入动手环节。这一章按“从零开始跑通一轮攻击”的顺序写每一步都能直接照着做。我默认你是在自己搭的练习靶场里操作而不是在比赛现场临时抱佛脚。3.1 环境就绪Python版本、依赖列表和启动入口框架整体是Python 3写的项目里能看到cpython-36.pyc之类的编译缓存说明作者开发时用的是Python 3.6。我建议本地直接用Python 3.8以上的干净环境不需要刻意复刻3.6。依赖不算重从源码里的import能看出核心就三个第三方库requestsHTTP提交、paramikoSSH连接、flask本地flag服务用的Web框架。sqlite3是Python内置模块不用额外装。# 创建独立虚拟环境避免污染系统Python python3 -m venv venv source venv/bin/activate # 安装依赖 pip install requests paramiko flask # 启动框架 python start.py启动后终端会进入一个交互式主循环打印当前配置的目标IP和模块加载状态。如果没有报错说明配置文件里的路径和字段都读到了。第一次启动大概率会提示缺少某个字段不要急回到SimpleConfig.py对照上一章的字段表补全。3.2 把配置对准比赛环境目标IP、shell密钥和提交地址这一节最容易被忽略很多队伍拿到框架后只改了IP和端口忘了改冰蝎的密钥。比赛里裁判会故意在部分靶机上部署“假shell”密钥是默认的连接成功后返回的flag也是假的浪费时间还误导判断。# 比赛开始前强制检查的三项配置 # 1) 目标IP列表每轮按裁判公布的网段替换 target_list [192.168.1.11, 192.168.1.12] # 2) 冰蝎密钥必须与你上传的webshell压缩包解出来的key一致别用默认的 behinder_key your-own-key # 3) 提交地址确认是flag接口还是普通post接口带不带路径前缀 flag_submit_url http://192.168.1.1/api/flag还有一个容易被忽略的点SshAck里的口令字典。框架自带的字典覆盖的是常见弱口令但AWD比赛里很多队伍会把初始密码改了再开打。我的习惯是开赛前先扫一遍同网段所有存活主机的22端口把摸到的真实口令追加进字典这样SshAck的成功率会提高不少。3.3 第一次get flag跑通“连接→读flag→提交”闭环环境配好之后先用一个最小脚本验证单台靶机的完整链路不要急着上全自动批量。# 手动验证一次完整取flag流程 from code.AutoAck import AutoAck from code.BehinderAck import BehinderAck from code.RecvCmd import RecvCmd # 建立连接器 shell BehinderAck(192.168.1.11, keyyour-own-key) if shell.check(): print([] shell online) # 执行远程命令读取flag cmd RecvCmd(shell) output cmd.run(cat /flag) flag output.strip() print([] flag , flag) # 提交flag ack AutoAck(submit_urlhttp://192.168.1.1/api/flag, wrapTrue) result ack.submit(flag) print([] submit , result)逻辑上走的是串行流程先确认shell存活再执行命令最后提交。首次跑通后就能理解为什么框架要把AutoAck单独拆出来——它承担了最频繁的提交操作其它连接器的执行结果都汇集到它这里。验证完这一轮再去看第4章的踩坑记录你会更有体感。4. AWD框架常见问题与避坑连接失败、冰蝎抽风与flag白交这一章是血泪经验汇总。我把最容易踩的五个坑按真实场景还原每条都是“现象→原因→解决”的结构建议收藏等你比赛时再翻出来对照。4.1 flag 提交一直 40xAwd.db 里记录全是 failed现象AutoAck 跑得很欢Awd.db 的 flag 提交表里全是失败状态裁判后台一条记录都没有。原因80%的情况是wrap参数和裁判接口不匹配。裁判接口要求提交裸 hash你按flag{}格式包了一层接口返回 400或者反过来接口要求完整 flag 格式你提交的是裸值。另一个较小的可能是提交地址少了/api/flag这类路径前缀。解决开赛前拿一个已知 flag 手动调用一次接口记录返回码和响应体再把flag_wrap和flag_submit_url改到对齐。这个验证动作必须做不能省。4.2 冰蝎 shell 连上了RecvCmd 回显一直超时现象BehinderAck 的 check 是通的但一发命令就卡住最后报 timeout日志里没有任何回显。原因冰蝎的传输协议里带了 AES 加密连接握手和命令执行用的是一次性 session key。如果靶机上的 PHP 版本太老或者open_basedir限制了临时文件写入就会出现“能连但不能执行”的假活现象。还有一种情况是命令里带了特殊字符回显被框架的正则过滤掉了。解决先用冰蝎原版客户端手动连一次同一台靶机确认不是马的问题。确认马是活的再检查RecvCmd的正则提取逻辑把回显里的控制字符先做 base64 编码再提取避开过滤。4.3 SSH 爆破结果一片绿登录后却什么都执行不了现象SshAck 跑完报告里有十几个账号显示成功但实际执行命令时全部提示 permission denied。原因AWD 靶机上很多 root 账号不允许远程登录爆破成功的往往是www-data这类低权限账户。框架能登录但RecvCmd执行的命令没权限读取/flag。解决登录后先执行id和sudo -l看当前用户和可用 sudo 命令。很多比赛的 flag 放在/home/某用户/flag下低权限账户反而能读到。用find / -name flag* 2/dev/null先定位再决定要不要提权。4.4 多台靶机同时攻击时主线程卡死AutoAck 不提交现象同时打开七八个 SshAck 线程主程序界面卡住AutoAck 队列里的 flag 越积越多就是不提交。原因框架的默认写法里连接、执行、提交是同步阻塞的。SSH 握手和命令执行等待时间长主线程被占住AutoAck 拿不到 CPU 时间片。解决把连接和提交拆到两个线程连接器只负责往队列里塞结果AutoAck 单独一个循环负责消费队列。改完记得给队列加上限防止内存被撑爆。4.5 源码包是伪加密 zip解压后 Awd.db 与源码对不上现象从裁判平台下载的赛题源码 zip 提示需要密码用常见密码解不开强行解开后源码目录里的配置与框架里的目标数据库不一致。原因很多赛题包故意做伪加密zip 头部的加密标志位是 1实际文件并没有加密。用普通解压工具会误以为需要密码导致解压失败或者解出不完整的文件。解决用 Python 直接读取 zip 目录项把加密标志位清零再解压import zipfile with zipfile.ZipFile(source.zip) as zf: for info in zf.infolist(): # 伪加密时 flag_bits 第0位为1实际数据未加密直接清零 info.flag_bits ~0x1 zf.extract(info, output/)解压完先检查Awd.db文件大小和表结构确认数据完整再接入框架。这一步能避免后面所有基于错误数据的分析。5. 进阶把框架当武器库用再反过来加固自己的站点5.1 从四个Ack模块倒推防御清单框架里的每一个模块其实都对应一个防守检查点。比赛里防守时间有限我通常拿这张表当最小加固清单框架模块攻击面防守动作BehinderAck冰蝎马连接扫描网站目录删除可疑 php 马重点是上传目录SshAck弱口令登录修改所有账号默认密码关闭 root 远程登录RecvCmd命令执行给危险函数加白名单禁止cat /flag路径AutoAck批量提取提交对自家活动目录做监控异常请求及时封 IP把框架跑一遍再对照这张表做防守思路会清晰很多。你不用防住所有攻击只要让对手的自动化工具在你站点上失效就已经赢过大多数队伍。5.2 挂载自己的检测模块最小骨架框架的模块接口不复杂想加一个自己的检测器只要实现 run 方法就行class MyDetector: def run(self, task): # task 是目标IP和端口等参数的字典 target task[ip] # 在这里写你的检测逻辑返回 (成功标志, 结果内容) return True, result写好后在start.py的模块加载列表里注册这个类主循环会自动调用。从那以后我每次拿到赛用框架都先花两小时把目录读完、在本地靶场把第一轮跑通再上比赛环境。读代码花的时间永远比在比赛里调配置省得多。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

网络锁节点配置包实操指南:安全注入与校验
网络锁节点配置包实操指南:安全注入与校验

简介:本资源是一套面向广联达加密锁开发人员的网络锁节点扩展工具包,适用于需对深思S4加密锁进行二进制文件写入与调试的中高级开发者。资源核心为可直接运行的单机锁开发测试环境(含DevTest工具),支持向网络锁dat文件… · 2026/9/25 13:02:06

Elasticsearch安全加固:四大通信通道TLS/SSL配置实战
Elasticsearch安全加固:四大通信通道TLS/SSL配置实战

身边不少同事第一次给 Elasticsearch 做安全加固时,都有过一种错觉:把xpack.security.enabled开成true,再建立一个超级用户,就以为“安全通信”完事了。结果一到生产环境,各种SSLHandshakeException、health check fai… · 2026/9/25 13:02:00

Atlas 300V Pro 24G上部署YOLO:从ONNX到OM完整实战指南
Atlas 300V Pro 24G上部署YOLO:从ONNX到OM完整实战指南

之前有朋友跑来问我:atlas 300v 24g 是运算加速卡吗?我当时第一反应是——是,而且如果你这会儿正准备上手YOLO部署,它可能是比NVIDIA那张T4更值得折腾的卡。Atlas 300V Pro 24G是昇腾平台上专门面向边缘推理场景的加速卡&#xff… · 2026/9/25 13:02:00

从国内爆红到国际冷场:Manus能否成为下一个DeepSeek?——用TaoToken统一Key实测多模型Agent配置
从国内爆红到国际冷场:Manus能否成为下一个DeepSeek?——用TaoToken统一Key实测多模型Agent配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 13:54:51

深入解析 Agora convo AI:用 NextJS 与 STT 从零搭建你的第一个 AI 教育 Agent 助手(TaoToken 统一 Key 配置)
深入解析 Agora convo AI:用 NextJS 与 STT 从零搭建你的第一个 AI 教育 Agent 助手(TaoToken 统一 Key 配置)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 13:54:32

Atlas 300V 24G加速卡详解与YOLO部署实战指南
Atlas 300V 24G加速卡详解与YOLO部署实战指南

如果你最近在网络上看过"atlas"这个词,八成绕不开华为昇腾系列AI加速卡。作为长期做深度学习部署的从业者,我几乎每天都要跟它打交道。最近不少朋友在问两件事:一是"atlas部署yolo怎么搞",二是"atlas 30… · 2026/9/25 13:53:44

5个免费AI写作软件搭配TaoToken:效率办公告别熬夜加班苦日子
5个免费AI写作软件搭配TaoToken:效率办公告别熬夜加班苦日子

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 13:53:31

AI视频生成新手第一课:用Seedance2-Skill快速上手即梦Seedance 2.0提示词(完整指南)
AI视频生成新手第一课:用Seedance2-Skill快速上手即梦Seedance 2.0提示词(完整指南)

AI视频生成新手第一课:用Seedance2-Skill快速上手即梦Seedance 2.0提示词(完整指南) 【免费下载链接】seedance2-skill skill to create best prompts for generating videos with seedance2.0 项目地址: https://gitcode.com/gh_mirrors/s… · 2026/9/25 13:53:31

C#酒店管理系统源码实战:WinForms前台与SQL Server后台全解析
C#酒店管理系统源码实战:WinForms前台与SQL Server后台全解析

简介:这是一套基于C#的酒店管理系统源码,适合学习桌面应用程序开发、酒店业务信息化管理的学生或初级开发者使用。系统覆盖前台与后台两大核心场景:前台支持预约、入住、换房、退房结算、客户信息维护及按房间号消费;后台提供财产… · 2026/9/25 13:53:31

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码