Skip to content

¿Cuáles son los principales tipos de inyección SQL?

Respuesta breve

La inyección SQL permite que la entrada de un atacante altere una consulta. Las técnicas en banda devuelven datos directamente: la basada en UNION añade un UNION SELECT para extraer columnas adicionales, y la basada en errores filtra datos a través de los mensajes de error de la base de datos. Cuando no hay salida visible, los atacantes usan SQLi a ciegas — la booleana infiere datos de las diferencias de respuesta verdadero/falso, y la basada en tiempo usa retrasos como SLEEP() para leer datos bit a bit.

La inyección SQL ocurre cuando una entrada no confiable se concatena en una consulta de modo que la entrada cambia la estructura de la consulta, no solo sus datos. Los atacantes clasifican las técnicas según cómo recuperan los datos — que depende por completo de lo que la aplicación revela en sus respuestas.

En banda: los datos vuelven directamente

  • Basada en UNION. El atacante añade UNION SELECT ... para hacer que la base de datos devuelva filas adicionales de otras tablas en el mismo conjunto de resultados que la aplicación ya muestra. Requiere coincidir con el número de columnas y los tipos compatibles de la consulta original, a menudo descubiertos mediante sondeo con ORDER BY o relleno con NULL.
  • Basada en errores. La aplicación muestra errores de la base de datos, así que el atacante elabora una entrada que fuerza al SGBD a incrustar datos sensibles dentro de un mensaje de error (por ejemplo, mediante conversión de tipos o EXTRACTVALUE). Rápida, pero solo funciona cuando los errores verbosos llegan al usuario.

A ciegas: no se muestran datos, así que se infieren

Cuando la aplicación no devuelve ninguna salida de consulta ni errores, el atacante extrae los datos un booleano a la vez:

  • Booleana. Inyectar una condición (AND 1=1 vs AND 1=2) y observar si el contenido de la página cambia (resultados mostrados o no). Cada respuesta verdadero/falso revela un bit, lo que permite al atacante reconstruir los valores carácter a carácter.
  • Basada en tiempo. Cuando ni siquiera el contenido de la página cambia, el atacante inyecta un retraso condicional — IF(condition, SLEEP(5), 0). Una respuesta lenta significa «verdadero». Es el método más lento pero funciona contra puntos totalmente a ciegas.

Fuera de banda (vale la pena mencionarla)

Cuando ni la técnica en banda ni la de tiempo funcionan, los atacantes pueden exfiltrar a través de un canal lateral como una petición DNS o HTTP que la base de datos realiza — útil en entornos fuertemente protegidos por cortafuegos.

La solución para todas es la misma: consultas parametrizadas.

Los entrevistadores buscan la distinción en banda vs a ciegas, el razonamiento de que la elección de la técnica depende de lo que revela la respuesta, y el reconocimiento de que la basada en tiempo es el último recurso.

Posibles preguntas de seguimiento

  • ¿Por qué un atacante recurre a la inyección a ciegas basada en tiempo?
  • ¿Cómo debe una inyección basada en UNION coincidir con el número y los tipos de columnas?
  • ¿Qué es la inyección SQL de segundo orden?

Fuentes

Certificaciones

Consigue 100 preguntas de entrevista de ciberseguridad + respuestas

Déjanos tu correo y te enviaremos el pack en PDF gratuito y el mazo de flashcards.

Sin spam. Cancela tu suscripción cuando quieras.