Lab: SQL injection UNION attack, finding a column containing text – Portswigger [Write Up]

Este laboratorio sería la continuación del anterior SQL injection UNION attack, donde mediante la modificación de la consulta a través de la inyección SQL con UNION attack, conseguíamos deducir cuántas columnas tenía la base de datos que alojaba la información.

Utilizamos Burp Suite para capturar la solicitud HTTP y modificar el parámetro category que está enviando el cliente. Esto permite insertar el payload para manipular la consulta SQL ejecutada en el servidor.

En este caso vamos a comprobar cuál de las tres columnas detectadas en el lab anterior con el comando NULL y a través de un comando de string, nos devuelve que esa columna contiene texto y por tanto es vulnerable a alojar usuarios, contraseñas, etc.

Como siempre, este Lab se encuentra dentro del listado de laboratorios de la plataforma de Portswigger Web Security Academy dentro de la vulnerabilidad SQL injection como Practitioner.

Inicialmente lo que hacemos es acceder a la página del laboratorio, y antes de clicar en cualquier categoría, abrimos BurpSuite dentro de Kali, activamos «On» la petición y activamos el FoxyProxy para enviar a Burp la petición y así manipularla.

Clicamos en cualquier categoría, vamos a la petición GET en la pestaña Proxy y la enviamos al Repeater con el botón derecho sobre la petición (o Control+R).

Desactivamos la intercepción de la petición en BS, y ya en el Repeater hacemos la inyección de SQL sustituyendo el nombre de la categoría por este código:

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

Tal y como vimos en el lab anterior, la BBDD contiene 3 columnas.

Ahora que ya sabemos que la consulta SQL original devuelve tres columnas, el siguiente paso es determinar cuál de esas columnas puede aceptar un dato de tipo string (texto).

Esto es esencial porque, para extraer datos útiles (como nombres de usuarios, contraseñas o cualquier información legible), necesitarás trabajar con columnas que puedan manejar este tipo de datos.

Probando a sustituir el cada comando NULL por una string de texto ‘abc’ (por ejemplo), veremos si el servidor nos responde OK y por tanto, esa columna es la que contiene string texto y por tanto es sobre la que podemos explotar información:

'+UNION+SELECT+NULL,'abcdef',NULL-- 

Al enviarlo, la página del laboratorio se actualizará y te mostrará un mensaje como este solo que para ti habrá una cadena de texto diferente:

Con esa cadena de texto o string, la sustituimos en el string de la segunda columna NULL que detectamos anteriormente, y al enviar la petición, tendremos resuelto el laboratorio.

'+UNION+SELECT+NULL,'1H8hlm',NULL-- 

Otros posts relacionados