SQL Injection (SQLi) en 2026: Guía Completa
La inyección SQL sigue siendo una de las vulnerabilidades más críticas y comunes en aplicaciones web. A pesar de los años, errores en la concatenación de strings para construir queries siguen exponiendo miles de bases de datos cada día.
¿Qué es SQL Injection?
SQL Injection es una vulnerabilidad que ocurre cuando un atacante puede interferir con las consultas que una aplicación hace a su base de datos. Generalmente permite ver datos que no suelen ser recuperables.
-- Query vulnerable tradicional
SELECT * FROM users WHERE id = ' + input + ';
Si el input es '1' OR '1'='1', la query se convierte en algo que siempre es verdadero, devolviendo todos los usuarios.
Tipos de SQLi
-
In-band SQLi (Classic): El atacante usa el mismo canal de comunicación para lanzar el ataque y recoger resultados.
- UNION-based: Usa el operador
UNIONpara unir resultados de tablas maliciosas. - Error-based: Provoca errores en la DB para obtener información de la estructura.
- UNION-based: Usa el operador
-
Inferential SQLi (Blind): No hay transferencia de datos directa. El atacante observa el comportamiento del servidor.
- Boolean-based: ¿La página carga diferente si la condición es verdadera?
- Time-based: ¿El servidor tarda más en responder si inyecto un
SLEEP()?
Cómo practicamos en TribuCibernetica
En nuestro Cyber Range, tenemos laboratorios específicos donde estas técnicas se aplican contra bases de datos MySQL, PostgreSQL y MSSQL reales.
[!IMPORTANT] Recuerda que el hacking ético siempre debe realizarse en entornos controlados y con autorización.
Ejemplo práctico: UNION-based
Para extraer el nombre de la base de datos actual:
' UNION SELECT 1, database(), 3--
¡Únete a la tribu y empieza a practicar hoy mismo!