Laboratorio: Inyección SQL ciega con retardos de tiempo y recuperación de información
->
Last updated
->
Last updated
Ahora bien, lo que intentaremos en este laboratorio será poder obtener informacion mediante una inyeccion SQL como sabemos por el lab anterior que la BD es postgreSQL entonces lo que haremos será sencillamente buscar un comando condicional que integré un DELAY dentro de un solo comando.
Entonces aqui podemos ver como sería el comando mediante la base de datos postgreSQL.
En el segundo comando SQL estamos añadiendo un || que es la concatenación, lo que nos permitira añadir la secuencia del comando SQL.
Para postgreSQL y Oracle nos sirve el mismo “||”.
Pero primero comprobaremos la longitud de la contraseña, hare un comando con una sintaxis un poco diferente debido a las instrucciones del laboratorio de portswigger.
Lo que buscamos es poder averiguar la longitud de la contraseña de ADMIN mediante el comando y con repeater de burpsuite pudimos probar la diferentes longitudes para la contraseña, ahora bien ¿como me doy cuenta hasta donde va la longitud? cuando deja de demorarse los 10 segundos del delay que nosotros mismos creamos, en ese momento ya sabemos que la longitud se excedió, la longitud aguanto hasta la longitud de 20, la contraseña tiene 20 de length.
Vamos primero seleccionando username y un AND para password igualando la primera posicion a ese valor que irá cambiando consecutivamente segun el payload.
Tuvimos que ajustar el grupo de recursos debido a que una forma exacta de saber cuando un caracter era parte de la contraseña era cambiando el hilo de multiples pruebas de los caracteres del payload a un solo hilo en una concurrencia maxima de 1, con el fin de el caracter que mas tuviese una respuesta recibida sería el caracter correspondiente de esa posicion de la contraseña.
El responde received con el mayor numero será evidentemente la letra del siguiente caracter, ya que es la letra que cumple con la condición de los 10 segundos que establecimos en el Delay
.
Y aqui ya hicimos el proceso de las 20 veces y obtuvimos la contraseña: vh7os0tc8uilujka9ati
Ahora bien, el proceso lo hicimos desde burp intruder, pero primero tuvimos que rectificar la longitud de la contraseña, concatenar cada comando con + para poder hacer la consulta, dar el CASE WHEN con el delay pg_sleep(10) y asi fue como comprobamos que cuando se demoraba con cada caracter en la posicion indicada en el position de burp intruder nos dabamos cuenta que ahi era realmente donde se denotaba que ese era el caracter de la contraseña.