Seguimos con la parte de explotación de una SQLi, pero a mano. Te recomiendo que si aún no has leído las entradas anteriores, lo hagas, ya que se empieza de cero y te van a ayudar a entender mejor lo que vamos a ver.
Bueno, dicho lo dicho, comencemos con el lab número 11, en que vamos a ver las inyecciones basadas en tiempo (time delay). En este lab concreto, nos indican que debemos ser capaces de retrasar la respuesta 10 segundos.
Esta vez, no va a mostrar ningún error, así que no olvidemos abrir Burp para ver lo que sucede "al otro lado".
Después de probar con varias, me doy cuenta que la BD es postgreSQL, así que la forma de realizar la inyección con 10 segundos es así:
'||pg_sleep(10)--

Y ya está, porque solo nos pide que retrasemos la respuesta 10 segundos, así que, nos indica que hemos solucionado el lab.

Vamos con el siguiente, que este ha sabido a poco xD.
Este nos dice que sigue siendo una inyección a ciegas por tiempo, pero hay que sacar el usuario y contraseña.
La inyección que vamos a utilizar es la siguiente:
'%3BSELECT+CASE+WHEN+(1=1)+THEN+pg_sleep(1)+ELSE+pg_sleep(0)+END--
Le decimos que si 1=1 (verdadero) entonces espere 1 segundo, y si no (else), nos devuelva la respuesta inmediatamente. El %3B es el carácter "URL encoded" del punto y coma (;), de esta forma indicamos que vamos a poner otra sentencia.

Ahora le vamos a preguntar si existe el usuario administrator en la tabla users.
'%3BSELECT+CASE+WHEN+(username='administrator')+THEN+pg_sleep(1)+ELSE+pg_sleep(0)+END+FROM+USERS--

Como podemos ver en la imagen anterior, tarda algo más de un segundo, de lo que deducimos que ese usuario existe.
Ahora como siempre, vamos a preguntar cuál es la longitud de la contraseña, para ello, hacemos uso de la siguiente inyección:
'%3BSELECT+CASE+WHEN+(username='administrator'+AND+lenght(password)=20)+THEN+pg_sleep(1)+ELSE+pg_sleep(0)+END+FROM+USERS--
En este caso me devuelve 1 segundo, por lo tanto son 20 caracteres (como siempre. Ahora nos llevamos a petición al intruder y desde ahí procedemos como hemos visto en anteriores entradas.
Ataque custer bomb, primer payload números del 1 al 20 y segundo payload letras de la 'a' a la 'z' y números del '0' al '9'. En este caso le he puesto 3 segundos porque no tengo prisa y parece que lo veo mejor (la edad no perdona xD).

Y ya tenemos la contraseña (wqdv290u3m62mbpqubwy), una vez más, procedemos a ordenarla y hacemos login para pasar el lab.

Nos vemos en la siguiente.
0 comentarios:
Publicar un comentario