SQL injection UNION attack, retrieving multiple values in a single column writeup

Descripción

This lab contains a SQL injection vulnerability in the product category filter. The results from the query are returned in the application’s response so you can use a UNION attack to retrieve data from other tables.

The database contains a different table called users, with columns called username and password.

To solve the lab, perform a SQL injection UNION attack that retrieves all usernames and passwords, and use the information to log in as the administrator user.

SQL injection UNION attack, retrieving multiple values in a single column writeup

Para poder realizar este laboratorio, vamos a tener que dividirlo en tres fases:

Localizar dónde hacer la inyección SQL

Sabiendo la información de los laboratorios anteriores, filtraremos por cualquier categoría y capturaremos la petición en el ‘Logger’ de Burp Suite:

Nos llevaremos la petición al ‘Repeater’ con Ctrl + R o click derecho -> Send to Repeater. Allí comenzaremos con el paso 2.

Determinar cuántas columnas está devolviendo la consulta SQL

Para ello, esta vez usaremos un método distinto al realizado en el primer laboratorio de UNION attack. Modificaremos la URL de la siguiente manera:

/filter?category=Gifts'+order+by+X--

Con esto, estaremos ordenando los resultados por columna, entonces al cambiar X por un número, empezando por el 1 y ascendiendo, al recibir un error sabremos cuántas columnas hay. En este caso el error ha surgido con ‘3’, por lo que hay 2 columnas en la petición anterior:

Determinar qué columnas devuelven texto

Para poder añadir la otra tabla, necesitaremos saber qué columnas devuelven texto, porque no podemos realizar un UNION attack con columnas de diferente tipo de dato. Cambiaremos la URL por la siguiente:

/filter?category=Gifts'+union+select+null,+null--

Cambiaremos un ‘null’ por ‘a’ (con las comillas). Si la aplicación devuelve error, la columna no devolverá texto. Si se añade la ‘a’ a la aplicación quiere decir que sí y que podremos usar ese hueco.

Ahora que sabemos que sólo podemos usar el segundo hueco, vamos a construir la siguiente URL:

/filter?category=Gifts'+union+select+null,+password+from+users+--

Donde se añadirá a la consulta creada por el desarrollador a la primera columna ‘null’, que puede añadirse a cualquier tipo de dato, y a la segunda columna la contraseña del usuario. Esta petición nos devolverá lo siguiente:

Al probar todas las contraseñas, la segunda nos dará acceso a la cuenta de administrador, completando así el laboratorio:

Deja una respuesta

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