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]);