Lab: SQL injection UNION attack, finding a column containing text
Ataque de inyección SQL mediante UNION, identificando una columna que contenga texto.
Información del laboratorio
https://portswigger.net/web-security/sql-injection/union-attacks/lab-find-column-containing-text
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 una continuación del laboratorio: Lab: SQL injection UNION attack, determining the number of columns returned by the query
Flujo de explotación
Obtener las columnas que pueden contener texto
Para ello, se tendría que generar la lista de payloads de acuerdo al número de columnas (3) obtenido en el laboratorio anterior Cómo identificar las columnas que permiten insertar texto en una inyección SQL UNION.
Con este script de bash oneliner se puede obtener la lista de payloads en base al número de columnas (cols) que tiene la tabla de la consulta SQL manipulada:
cols=3; for i in $(seq 1 $cols); do echo "' UNION SELECT $(for j in $(seq 1 $cols); do [ $j -eq $i ] && echo -n "'a'" || echo -n "NULL"; [ $j -lt $cols ] && echo -n ","; done)--"; done
Esta lista, se inserta en intruder, de la misma forma que en el laboratorio anterior:

Al ejecutar el ataque, se puede observar cómo los campos que permiten la inserción de texto, responden con el código 200 y también se observa una diferencia en el tamaño de la respuesta:

Esto quiere decir, que la columna 2 es la única que permite insertar texto.
Esto se puede observar también desde la aplicación, observando la cadena inyectada unida al resto de información de la tabla:

Última actualización
¿Te fue útil?