SQLi Error Based
Como Explorar
SQL Injection (Error Based) explora falhas na validação de entradas em aplicações web, permitindo que um atacante injete comandos SQL maliciosos. O atacante utiliza erros retornados pelo banco de dados para obter informações sensíveis.
terminal
Exemplo:
GET /produtos.php?id=1' OR 1=1-- -
Resposta:
You have an error in your SQL syntax; check the manual...- Identifique campos vulneráveis (parâmetros GET/POST).
- Insira payloads que causem erro e revelem informações.
- Analise mensagens de erro para mapear a estrutura do banco.
Por que acontece
Ocorre quando a aplicação concatena diretamente entradas do usuário em comandos SQL, sem sanitização ou uso de queries parametrizadas. Isso permite que comandos maliciosos sejam executados no banco de dados.
- Falta de validação e sanitização de entradas.
- Uso de queries dinâmicas sem parâmetros.
- Mensagens de erro detalhadas expostas ao usuário.
Como Corrigir
- Utilize queries parametrizadas/prepared statements.
- Sanitize e valide todas as entradas do usuário.
- Desabilite mensagens de erro detalhadas em produção.
- Implemente controles de acesso e privilégios mínimos.
terminal
// Exemplo seguro em Node.js (MySQL)
const [rows] = await conn.execute('SELECT * FROM produtos WHERE id = ?', [id]);