O **ffuf** (pronuncia-se “**foof**”) é uma ferramenta **rápida e poderosa** de _[[fuzzing]]_ escrita em Go, usada principalmente por pentesters e red teamers para:
```shell
# Request básico para fuzzing de diretorios:
ffuf -w wordlist.txt -u exemplo.com/FUZZ
# Request com duas wordlists para fuzzing de
# diretorio e extenções.
ffuf -w wordlist1.txt:FUZZ1 -w wordlist2.txt:FUZZ2 -u exemplo.com/FUZZ1FUZZ2
# Comando com Recursividade
ffuf -w wordlist.txt -recursion -recursion-depth 2 -u dominio.com/FUZZ
# Comando para Request com arquivo:
ffuf -request req.txt -w wordlist.txt
# Fuzzing de usuários e senhas:
ffuf -w wordlists1.txt:USER -w wordlists2.txt:PASS -X POST -d "username=USER&password=PASS" -H "Content-Type: application/x-www-form-urlencoded" -u http://exemplo.com/login
# Fuzzing de IDOR passando valores através de SEQ
seq 1 1000 | ffuf -w - -u http://ffuf.me/cd/pipes/user?id=FUZZ
```
Testar se uma entrada está em MD5 ou Base64:
```shell
#!/bin/bash
while read i
do
if [ "$1" == "md5" ]; then
echo -n $i | md5sum | awk '{ print $1 }'
elif [ "$1" == "b64" ]; then
echo -n $i | base64
else
echo $i
fi
done
```
```shell
# O comando pega o número do SEQ, encoda em MD5 e Base64
# e passa pro Fuff como entrada de Wordlist.
seq 1 1000 | hashit b64 | ffuf -w - -u http://ffuf.me/cd/pipes/user2?id=FUZZ
```