ffuf
2026/5/29工具工具Web安全fuzzffuf大约 3 分钟
ffuf
是什么
ffuf 是 Fuzz Faster U Fool 的缩写,是一个用 Go 编写的 Web fuzz 工具。
它不只用于目录扫描,也能做:
- 目录和文件发现
- 虚拟主机枚举
- 参数名发现
- 参数值 fuzz
- POST 数据 fuzz
- Header fuzz
和 dirsearch 相比,ffuf 更像通用 fuzz 引擎,核心是把字典里的词替换到 FUZZ 位置。
安装与配置
如果有 Go 环境,推荐:
go install github.com/ffuf/ffuf/v2@latestmacOS 可用 Homebrew:
brew install ffuf也可以从 GitHub Releases 下载预编译文件:
https://github.com/ffuf/ffuf/releases验证安装:
ffuf -h基本用法
目录扫描
ffuf -w wordlist.txt -u http://target.com/FUZZ指定扩展名
ffuf -w wordlist.txt -u http://target.com/FUZZ -e .php,.txt,.zip过滤状态码
ffuf -w wordlist.txt -u http://target.com/FUZZ -fc 404过滤响应长度
ffuf -w wordlist.txt -u http://target.com/FUZZ -fs 1234设置线程
ffuf -w wordlist.txt -u http://target.com/FUZZ -t 50走代理
ffuf -w wordlist.txt -u http://target.com/FUZZ -x http://127.0.0.1:8080更多选项
匹配状态码
ffuf -w wordlist.txt -u http://target.com/FUZZ -mc 200,301,302只显示指定状态码的结果。
匹配响应大小
ffuf -w wordlist.txt -u http://target.com/FUZZ -ms 100-500只显示指定大小范围的结果。
过滤单词数
ffuf -w wordlist.txt -u http://target.com/FUZZ -fw 100过滤响应中包含指定单词数的结果。
匹配正则
ffuf -w wordlist.txt -u http://target.com/FUZZ -mr "flag|admin"匹配响应中包含指定正则的结果。
输出格式
ffuf -w wordlist.txt -u http://target.com/FUZZ -o result.json -of json
ffuf -w wordlist.txt -u http://target.com/FUZZ -o result.csv -of csv
ffuf -w wordlist.txt -u http://target.com/FUZZ -o result.html -of html延迟请求
ffuf -w wordlist.txt -u http://target.com/FUZZ -p 0.5每个请求之间延迟 0.5 秒。
自动化 calibrate
ffuf -w wordlist.txt -u http://target.com/FUZZ -ac自动校准过滤条件,减少手动配置。
HTTP 方法
ffuf -w wordlist.txt -u http://target.com/FUZZ -X POST
ffuf -w wordlist.txt -u http://target.com/FUZZ -X PUT自定义 Header
ffuf -w wordlist.txt -u http://target.com/FUZZ -H "X-Custom: value"
ffuf -w wordlist.txt -u http://target.com/FUZZ -H "Authorization: Bearer token"POST 数据
ffuf -w wordlist.txt -u http://target.com/login -X POST -d "user=admin&pass=FUZZ"
ffuf -w wordlist.txt -u http://target.com/api -X POST -d '{"key":"FUZZ"}' -H "Content-Type: application/json"递归深度
ffuf -w wordlist.txt -u http://target.com/FUZZ -recursion -recursion-depth 2CTF常用技巧
虚拟主机枚举
如果题目给的是一个 IP,或者提示 Host 很重要:
ffuf -w subdomains.txt -u http://target-ip/ -H "Host: FUZZ.example.com" -fs 1234关键是找到正常 404 页面长度,然后用 -fs 或 -fw 过滤。
参数名发现
ffuf -w params.txt -u "http://target.com/index.php?FUZZ=1" -fs 1234适合页面功能少,但可能藏着调试参数、文件参数、用户 ID 参数的题。
POST fuzz
ffuf -w words.txt -u http://target.com/login -X POST -d "username=admin&password=FUZZ" -H "Content-Type: application/x-www-form-urlencoded"Header fuzz
ffuf -w headers.txt -u http://target.com/admin -H "X-Forwarded-For: FUZZ"可用于测试 IP 白名单绕过、内网访问限制、调试 Header。
多字典 fuzz
ffuf -w users.txt:USER -w passwords.txt:PASS -u http://target.com/login -X POST -d "u=USER&p=PASS"JSON fuzz
ffuf -w keys.txt -u http://target.com/api -X POST -d '{"FUZZ":"test"}' -H "Content-Type: application/json"路径遍历 fuzz
ffuf -w payloads.txt -u "http://target.com/read?file=FUZZ" -mr "root|flag"常用字典
目录扫描:
- /usr/share/wordlists/dirb/common.txt
- /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
- SecLists/Discovery/Web-Content/
子域名:
- SecLists/Discovery/DNS/subdomains-top1million-5000.txt
参数:
- SecLists/Discovery/Web-Content/burp-parameter-names.txt常见问题
结果太多
先访问一个随机不存在路径,记录状态码、长度、单词数,再用 -fc、-fs、-fw 过滤。
为什么 dirsearch 能扫到,ffuf 扫不到
检查是否漏了扩展名、字典不同、是否需要 Cookie、是否被统一响应长度干扰。
什么时候不用 ffuf
如果只是初学者快速扫常规目录,dirsearch 更省心。需要自定义 fuzz 位置时,ffuf 更合适。
性能优化
1. 调整线程数(-t)
2. 使用更小的字典
3. 使用 -ac 自动校准
4. 过滤不需要的状态码和 Burp Intruder 对比
ffuf: 命令行、速度快、适合批量
Burp Intruder: 图形化、灵活、适合精细测试关联
- HTTP请求与响应
- Web题的观察顺序
- 访问控制与越权
- SSRF基础
- Burp Suite
- curl
- dirsearch