SQLi Blind
Como Explorar
SQL Injection (Blind) ocorre quando a aplicação não retorna mensagens de erro, mas ainda é vulnerável. O atacante utiliza respostas booleanas (true/false) para inferir informações do banco.
terminal
Exemplo:
?id=1 AND 1=1 -- (retorna resultado normal)
?id=1 AND 1=2 -- (retorna página diferente ou vazia)
- Teste respostas diferentes para condições verdadeiras/falsas.
- Utilize payloads booleanos para mapear dados.
- Automatize com ferramentas como sqlmap.
Por que acontece
Acontece quando a aplicação esconde mensagens de erro, mas ainda executa comandos SQL sem validação adequada. O atacante explora diferenças de resposta para obter dados.
- Falta de queries parametrizadas.
- Respostas diferentes para condições verdadeiras/falsas.
- Ausência de tratamento de exceções adequado.
Como Corrigir
- Use queries parametrizadas/prepared statements.
- Padronize respostas para todas as requisições.
- Valide e sanitize todas as entradas.
terminal
// Exemplo seguro em Node.js (MySQL)
const [rows] = await conn.execute('SELECT * FROM users WHERE id = ?', [id]);