NT-2026.10.03 DOSSIÊ RED TEAM
SQLMAP: INJEÇÃO SQL EM BUG BOUNTY E PENTEST WEB
SQLMap é a ferramenta padrão para SQL injection automatizada. Este artigo cobre payloads simples (--risk/--level), dump de bancos/tabelas/usuários/hashes, tampers (randomcase, space2comment, between) para bypass de WAF, e técnicas de UNION (--union-col, --union-char) para injeções complexas.

Introdução
SQLMap é a ferramenta padrão para SQL injection automatizada, presente há anos no arsenal de pentesters e bug bounty hunters. Quando você testa websites para SQLi, frequentemente começa manualmente com payloads conhecidos e depois migra para ferramentas. Embora existam algumas alternativas, o SQLMap permanece a mais capaz.
A injeção SQL é considerada vulnerabilidade crítica, pois pode levar a RCE ou comprometimento total do website, dependendo do DBMS. Em um pentest real, um IP de admin whitelistado no MySQL também tinha SSH aberto, e reuso de credenciais permitiu acesso ao servidor. Um finding pode levar ao próximo.

OWASP Top 10 e Tipos de Injeção SQL
Embora as injeções tenham caído na lista do OWASP Top 10, ainda estão lá e muito exploráveis. Muitos sites governamentais são vulneráveis. Existem quatro tipos principais:
- Time-based: lento, baseado em atrasos de resposta
- Union-based: permite dump de bancos inteiros rápido e limpo
- Error-based: comum e fácil de detectar via mensagens de erro
- Boolean-based: inferência baseada em verdadeiro/falso
Não é sempre óbvio que um site é vulnerável. Pode parecer desatualizado e não dar nada, enquanto sites sólidos podem vazar tudo com um único payload.
Payload Simples — Risk e Level
Comece com o básico. Frequentemente não precisa exagerar — o SQLMap resolve a maior parte. Payloads simples funcionam; complexidade não aumenta chance de sucesso. Alterar –risk ou –level cedo demais pode fazer o payload falhar.
Exemplo com request POST interceptado do Burp (salvo em example.com.txt):
kali > sudo sqlmap -r example.com.txt --risk=3 --level=4 --batch --random-agent
Você pode brincar com levels e risks, mas cuidado: sites com WAF podem exigir valores baixos no início.
Para dumpar dados do banco billing, tabela users11, com enumeração de colunas:
kali > sudo sqlmap -r example.com.txt --risk=3 --level=4 --batch --random-agent --dump -D billing -T users11 --columns
Flags úteis:
--users: extrai usuários de gerenciamento do banco (IPs whitelistados, localhost)--passwords: dumpa hashes de senha se disponíveis — abre novo vetor de ataque
Se alguém cracka hash de admin, causa dano real ao website.



Segundo Exemplo — Enumeração de Databases
Teste onde risk/level maiores funcionam bem. O asterisco (*) marca o parâmetro a testar; também use -p para isso.
kali > sudo sqlmap -u "https://example.com/product.php?id=*" --risk=3 --level=4 --random-agent --batch --dbs
Funcionou. Agora dump da tabela users com usernames e hashes. Nem todos hashes são crackeáveis pelo SQLMap — se falhar, exporte e use Hashcat ou John the Ripper.


Tampers — Bypass de WAF
Site protegido por WAF que filtra requests suspeitos. Payloads regulares falham. Usamos tampers — scripts que modificam payloads para bypass. randomcase randomiza casing do payload, ajudando a bypassar WAFs.
kali > sudo sqlmap -u "http://example.com/search?category?new&q=news" --batch --level=3 --risk=2 --dbms=mysql -p q --dbs --tamper=randomcase --no-cast
Flag --no-cast: diz ao SQLMap para não fazer cast de tipos de dados. Útil após achar injeção funcional; antes pode atrapalhar.
Existem muitos tamper scripts para diferentes firewalls. Se identificar o firewall, chance melhor de escolher o certo. Lista de tampers disponíveis no SQLMap:
kali > sqlmap --list-tampers


Columns — Injeção UNION
Como o mecanismo de busca funciona e como dados são apresentados? Se resultados aparecem em tabela, você deve testar colunas. Precisa saber quantas colunas são retornadas. Se payload UNION usa número errado, não funciona.
Use --union-col=4 para definir 4 colunas:
kali > sudo sqlmap -u "https://example.com/afond/index.php?x=0&y=0&short_search=...&act=search" --level=5 --risk=3 --tamper=randomcase,between,space2comment --random-agent --batch --dbs --dbms=mysql -p short_search --union-col=4 --union-char="a" --no-cast
Caractere UNION (--union-char) aleatório ajuda estabilizar payload e evitar falsos positivos. Não esqueça tampers — pode empilhar, desde que não conflitam.

Conclusão
Esta é a Parte 1 da série. Cobrimos a base do uso real do SQLMap e suas funções. Como mencionado, SQLi são vulnerabilidades críticas e sempre vale testá-las durante Web App Hacking ou Bug Bounty. Treinamentos específicos dão skills para encontrar primeiros bugs ou conseguir vaga de pentester — muitas empresas exigem essas competências.
Próxima parte: técnicas avançadas, tamper stacking otimizado, second-order SQLi, e casos reais de RCE via SQLi.