
Descripción
This lab contains a blind SQL injection vulnerability. The application uses a tracking cookie for analytics, and performs a SQL query containing the value of the submitted cookie.
The results of the SQL query are not returned, and no error messages are displayed. But the application includes a Welcome back
message in the page if the query returns any rows.
The database contains a different table called users
, with columns called username
and password
. You need to exploit the blind SQL injection vulnerability to find out the password of the administrator
user.
To solve the lab, log in as the administrator
user.
Blind SQL injection with conditional responses writeup
Esta vez la vulnerabilidad estará en toda la página web, pero la inyección SQL se tiene que hacer en la cookie. De nuevo dividiremos el laboratorio en varios pasos.
Localizar dónde hacer la inyección SQL
Primero, con el ‘Logger’ activado, recargaremos la página principal del laboratorio. Enviaremos esta petición al ‘Repeater’ con Ctrl + R o click derecho -> Send to Repeater.

En el repeater añadiremos los siguientes códigos a la etiqueta ‘Cookie’.
'+AND+1=1--
'+AND+1=2--
Con el primero, debe de aparecer el mensaje de ‘Welcome back!’, pero con el segundo no. Así sabremos que la página está procesando nuestra petición SQL.

Preparar el payload
Como estamos realizando una inyección SQL a ciegas, no podemos usar ‘UNION’, ni ver directamente el contenido de la tabla, por lo que la URL que enviaremos cambia drásticamente:
'+AND+(select+'a'+from+users+where+username='administrator')=+'a'--
En este caso le estamos diciendo a la página web que realice lo siguiente:
- ‘: Cierra la consulta anterior, que es la de la cookie.
- AND: añade una nueva condición que debe de dar true para que salga el ‘Welcome back!’.
- select ‘a’: Devuelve a si…
- from users: En la tabla users
- where username=’administrator’: Hay una fila donde el username sea administrator.
- = ‘a’: Es la condición que debe devolver true para que salga el mensaje.

Tenemos el mensaje, por lo que el usuario existe, ahora enviaremos la petición al ‘Intruder’ con Ctrl + I o Click derecho -> Send to Intruder, para hacer un ataque de fuerza bruta a la contraseña.
Determinar la longitud de la contraseña
Primero, modificamos la cookie de la siguiente forma:
'+AND+(select+'a'+from+users+where+username='administrator'+AND+LENGTH(password)=§§)=+'a'--

Segundo, vamos a ‘Payloads’ y le indicamos a Burp Suite que utilice una lista de números de 1 a 25:

Al pulsar ‘Start attack’ y tener los resultados, buscaremos el mensaje de ‘Welcome back!’:

Ahora sabemos que la contraseña del usuario ‘administrator’ tiene 20 caracteres.
Ataque de fuerza bruta para obtener la contraseña
Modificamos la cookie tal que así:
'+AND+(select+substring(password,§1§,1)+from+users+where+username='administrator')=+'§2§'--
Y seleccionamos de la parte superior el tipo de ataque ‘Cluster bomb’ para tener más control sobre qué enviamos en cada payload.
- Para el payload 1 vamos a usar de nuevo la lista de números, del 0 al 20.
- Para el payload 2 vamos a usar la lista de letras minúsculas ‘a-z’ y de números ‘0-9’
Al pulsar ‘Start atack’ y esperar a que este finalice, podremos buscar la expresión ‘Welcome’ y ordenar por el payload 1 de manera ascendente:

Obteniendo así la contraseña ‘s3gch7jr6sab672g29m8’. Al iniciar sesión en el navegador completaremos el laboratorio:
