简介:FUZZ爆破字典.rar 是一份面向网络安全测试人员与漏洞挖掘学习者的模糊测试种子资源包,主要用于为 AFL、honggfuzz、libFuzzer 等 FUZZ 工具提供高质量输入字典,帮助在边界检查、内存管理与类型转换等薄弱环节中触发异常,从而发现潜在漏洞。压缩包整体约 20.17MB,以 rar 格式打包,内部收录 ASCII 字符组合、特殊字符序列、二进制数据、文件头信息及网络协议报文模板等常见字典类型,可覆盖文件格式解析与协议处理等多种测试场景。目前已有 1110 人学习下载,适合刚接触模糊测试的读者快速搭建测试环境,也为进阶测试者提供可参考的字典构建思路。使用者可结合目标程序输入格式挑选合适字典,理解字典质量与覆盖率对测试效果的影响,并在此基础上持续更新优化,提升漏洞发现效率。
1. 从一次目录扫描翻车说起:FUZZ 爆破字典到底解决什么问题
刚入行那会儿做授权测试,拿到目标后我习惯性挂上默认字典就跑目录扫描,结果跑了半小时只回了一堆 403 和 200 的首页,真正有用的后台入口一个没摸着。后来复盘才发现,问题不在工具,而在字典——默认字典里全是admin、login、backup这类烂大街的路径,稍微做过防护的目标早就把这些名字拉黑了。FUZZ 爆破字典这类资源,本质上就是解决「猜什么」的问题:它把 Web 目录、参数名、接口路径、子域名、文件后缀这些需要枚举的候选值,按场景整理成可直接喂给工具的文本清单。适合谁?做授权渗透测试、漏洞赏金、资产测绘的安全从业者,以及需要批量探测接口的运维和开发。它不负责发包,只负责提供「弹药」,配合 ffuf、dirsearch、feroxbuster、wfuzz 这类工具使用。这份字典包的价值在于覆盖面——把目录、参数、子域、备份文件、API 端点分开归类,让你按目标类型挑着用,而不是一把梭。
2. 拆开字典包:目录结构与场景化选型逻辑
拿到一个.rar字典包,第一件事不是急着解压跑工具,而是先看清楚里面到底装了什么。很多人翻车的根源就是「字典混用」——拿子域名字典去扫目录,或者拿通用目录字典去爆 API 参数,命中率低得可怜还怪工具不行。
2.1 解压后的典型目录布局
一个整理得比较规范的 FUZZ 字典包,解压后通常长这样(不同来源会有差异,但分类逻辑大同小异):
fuzz_dict/ ├── directory/ # 目录与路径枚举 │ ├── common.txt # 通用中小型字典,几千到几万行 │ ├── big.txt # 大字典,几十万行,适合深度扫描 │ └── api.txt # API 路径专用,含 v1/v2/rest/graphql 等 ├── parameter/ # 参数名枚举 │ ├── get_params.txt │ └── post_params.txt ├── subdomain/ # 子域名枚举 │ ├── top5000.txt │ └── full.txt ├── backup/ # 备份文件与敏感文件 │ └── extensions.txt # .bak .swp .old .zip .sql 等 └── fuzzing/ # 通用 FUZZ 占位符字典 └── special_chars.txt这个布局的核心思路是「按攻击面分类」。目录枚举关心的是路径名,参数枚举关心的是键名,子域名关心的是前缀,备份文件关心的是后缀组合。把它们混在一起,等于让工具去做无用功。
2.2 字典选型的三个判断维度
选哪本字典,我一般看三个维度:目标体量、防护强度、时间预算。
| 维度 | 小字典(<1万行) | 中字典(1万-10万行) | 大字典(>10万行) |
|---|---|---|---|
| 适用场景 | 快速摸底、CTF | 常规授权测试 | 深度资产测绘 |
| 单次耗时 | 几十秒 | 几分钟 | 十几分钟到数小时 |
| 被 WAF 拦截风险 | 低 | 中 | 高,需限速 |
| 命中特点 | 只中常见路径 | 覆盖主流框架 | 能挖到冷门入口 |
新手最容易犯的错是一上来就上大字典,结果请求量太大触发防护,IP 被封,整个测试中断。我的习惯是先用小字典快速过一遍,摸清目标的技术栈和响应特征,再决定要不要上大字典补扫。
2.3 字典行数与去重:别让重复项拖慢你
字典包里经常混着重复行和空行,跑之前最好清洗一遍。用一条命令就能搞定:
# 去除空行、去重、按字母排序,输出到新文件 grep -v '^$' directory/common.txt | sort -u > directory/common_clean.txt # 统计清洗前后行数对比 wc -l directory/common.txt directory/common_clean.txt逻辑说明:grep -v '^$'过滤掉空行,sort -u在排序的同时完成去重。参数上没什么可调的,但要注意——有些字典故意保留大小写变体(比如Admin和admin),如果你确定目标对大小写不敏感,可以加-f忽略大小写再去重,能进一步压缩体积。清洗这一步看着不起眼,但在几十万行的字典上能省下可观的请求量。
3. 把字典喂给工具:ffuf 与 dirsearch 的实操配置
字典准备好了,接下来是让它真正跑起来。这一章落到具体命令和参数,以 ffuf 和 dirsearch 为主,这两个是当前目录 FUZZ 场景里用得最多的组合。
3.1 ffuf 的核心参数拆解
ffuf 的优势是快、灵活,用FUZZ关键字标记字典插入的位置。一条典型的目录扫描命令:
# -w 指定字典,-u 中 FUZZ 是占位符,-mc 过滤状态码,-fs 过滤响应大小 ffuf -w directory/common_clean.txt:FUZZ \ -u https://target.example.com/FUZZ \ -mc 200,301,302,403 \ -fs 0 \ -t 50 \ -rate 100 \ -o result.json -of json逐项说明:-w后面的:FUZZ是给字典起别名,方便一个命令里用多本字典;-mc只保留指定状态码,把 404 和 500 过滤掉能大幅减少噪音;-fs 0过滤掉响应体为空的请求,很多 WAF 会返回空 body 的 403,这条能帮你排除干扰;-t 50是并发线程数,默认 40,内网可以拉到 100 以上,公网目标建议压到 20-30;-rate 100限制每秒请求数,这是避免触发防护的关键参数;-o和-of把结果存成 JSON,方便后续用 jq 处理。
提示:
-rate和-t要配合着调。线程高但速率低,实际并发上不去;线程低但速率高,又容易在单个连接上堆积。公网目标我一般-t 30 -rate 80起步,观察响应时间再微调。
3.2 dirsearch 的配置与递归扫描
dirsearch 比 ffuf 更「开箱即用」,自带递归、后缀组合、随机 User-Agent 这些功能,适合不想手写太多参数的人:
# -e 指定扩展名,-r 开启递归,--exclude-status 排除状态码 python3 dirsearch.py \ -u https://target.example.com \ -w directory/common_clean.txt \ -e php,asp,aspx,jsp,html,js \ -r --recursion-depth 2 \ --exclude-status 404,500 \ --random-agent \ -t 30 \ --output result.txt-e让 dirsearch 自动把每个字典词和扩展名组合,比如admin会尝试admin.php、admin.asp等,这一步能显著提升命中率,但请求量也成倍增长,所以配合-t 30控制并发。-r开启递归,--recursion-depth 2限制递归两层,防止在无限目录结构里打转。--random-agent每次请求换 UA,降低被基于 UA 的规则拦截的概率。--exclude-status把 404 和 500 排除,输出更干净。
3.3 参数 FUZZ:从目录转向接口
目录扫完只是第一步,真正有价值的漏洞往往藏在参数里。用 ffuf 做参数名枚举:
# 从 GET 参数入手,观察响应大小变化定位有效参数 ffuf -w parameter/get_params.txt:FUZZ \ -u "https://target.example.com/api/user?FUZZ=test" \ -mc all \ -fs 1234 \ -t 40这里-mc all保留所有状态码,因为参数枚举时有效参数不一定返回 200,可能是 400 或 302。关键在-fs——先用一个不存在的参数跑一次,记下响应大小,然后把它填进-fs过滤掉,剩下的就是「响应不一样」的候选参数。这个思路叫「基于响应差异的过滤」,是参数 FUZZ 的核心。
4. 避坑与排查:字典跑不出结果的五个血泪经验
字典和工具都没问题,结果却一片空白,这种情况太常见了。下面五条是我踩过的坑,按「现象 → 原因 → 解决」整理。
4.1 现象:全是 403,一个有效路径都没有
原因:目标前面挂了 WAF 或 CDN,所有请求被统一拦截返回 403,字典本身没问题。解决:先手动访问一个确定存在的路径(比如首页),对比响应头里的Server、X-Powered-By字段,确认拦截层。然后降低-rate到 20 以下,加--random-agent,必要时换请求方法(有些 WAF 只拦 GET 不拦 POST)。如果还是全 403,说明目标防护等级较高,需要换思路而不是硬刚字典。
4.2 现象:命中一堆 200,但打开全是同一个页面
原因:目标配置了「软 404」——不存在的路径也返回 200 加首页内容。解决:用-fs过滤掉首页的响应大小。先手动请求一个随机路径,记下 body 大小,填进-fs。ffuf 还支持-fr按正则过滤响应内容,比如-fr "not found",对付软 404 更精准。
4.3 现象:字典明明有admin,却扫不出来
原因:目标把后台路径改了,或者admin被单独做了访问控制,返回的响应和 404 一样。解决:换用更大的字典,或者用-e组合扩展名再扫一遍。另外可以试试在路径后加/、//、/.这些变体,有些路由规则对尾部字符敏感。字典不是万能的,它只能覆盖「常见命名」,改过名的路径得靠其他信息收集手段。
4.4 现象:跑了几万行后工具卡死或超时
原因:并发太高导致本地网络栈或目标连接数打满,或者字典里有超长行触发异常。解决:把-t降到 20,加-timeout参数(ffuf 默认 10 秒,可以设成 5)。同时检查字典里有没有异常长的行:awk 'length > 200' common.txt,把超长行删掉。大字典建议分批跑,用split -l 10000 common.txt part_切成小块,跑完一块再跑下一块。
4.5 现象:结果里有大量重复 URL
原因:字典本身有重复行,或者递归扫描时同一路径被多次命中。解决:跑之前先做去重(见 2.3 节)。如果是递归导致的,用--recursion-depth限制层数,或者在结果里用sort -u二次去重。ffuf 的 JSON 输出可以用jq -r '.results[].url' result.json | sort -u快速清理。
5. 进阶技巧:字典组合、动态过滤与结果验证
字典用熟了之后,单纯的「一本字典跑一次」已经不够用了。真正拉开效率差距的,是字典的组合使用和结果的二次验证。
5.1 多字典组合:一次命令覆盖多个攻击面
ffuf 支持在一个命令里挂多本字典,用不同的别名区分:
# 同时枚举目录和扩展名,FUZZ 是路径,EXT 是后缀 ffuf -w directory/common_clean.txt:FUZZ \ -w backup/extensions.txt:EXT \ -u "https://target.example.com/FUZZ.EXT" \ -mc 200,301,302 \ -t 30 -rate 80这样每个路径词都会和每个后缀组合,比如backup.zip、config.bak。组合数量是两本字典行数的乘积,所以两本都别选太大,否则请求量爆炸。我一般用中小字典做组合,大字典单独跑。
5.2 动态过滤:用-ac自动校准
ffuf 有个很实用的参数-ac(auto-calibrate),它会自动发送几个随机路径,根据响应特征建立过滤基线,省去手动设-fs的麻烦:
ffuf -w directory/common_clean.txt:FUZZ \ -u https://target.example.com/FUZZ \ -ac \ -mc 200,301,302,403 \ -t 30-ac适合目标响应特征不明确的情况,代价是多发几个校准请求。如果目标有速率限制,校准请求也可能被拦,这时候还是手动设-fs更稳。
5.3 结果验证:别让误报浪费你的时间
工具跑完只是开始,结果必须人工或脚本验证。我习惯用一段 Python 快速过滤:
import json import requests # 读取 ffuf 的 JSON 输出,逐个验证状态码和响应长度 with open('result.json') as f: data = json.load(f) for item in data['results']: url = item['url'] try: # 用 HEAD 请求快速验证,避免下载完整 body r = requests.head(url, timeout=5, allow_redirects=False) # 只保留状态码稳定且长度非零的结果 if r.status_code in (200, 301, 302) and int(r.headers.get('Content-Length', 0)) > 0: print(f"[VALID] {r.status_code} {url}") except requests.RequestException: pass逻辑说明:用HEAD而不是GET,只取响应头不下载 body,速度快很多。allow_redirects=False保留原始状态码,方便判断是直接命中还是跳转。Content-Length大于 0 过滤掉空响应。这段脚本适合在几千条结果上做初筛,筛完再人工看重点。
5.4 字典的持续维护
字典不是拿到就一劳永逸的。每次测试完,把新发现的路径、参数追加到自己的字典里,日积月累就是一份贴合自己目标类型的私有字典。我一般建一个custom.txt,专门存自己攒的路径,跑的时候和通用字典一起挂上去。另外,字典要定期去重和清理——用久了会混进大量无效词,反而拖慢速度。
从那以后我每次拿到新字典,都强制先做三件事:看目录结构、清洗去重、小字典试跑。这三步走完再上大字典,翻车概率能降一大半。希望帮到你。
本文还有配套的精品资源,点击获取