Buscar

01 enero 2021

SQLi – Aprendiendo a explotarlo (manopla style) Parte II

Continuando lo que vimos en la primera parte, vamos a seguir resolviendo los labs de la gente de PortSwigger. Así que, no me lío y vamos a empezar directamente con el lab número 4.


En esta lab debemos conseguir mostrar varios valores pero de una sola columna. Para este lab, os recomiendo hacer uso del cheatsheet que ellos mismos tienen de SQLi.

El parámetro vulnerable sigue siendo category y como en el último lab, debemos sacar el usuario y contraseña de la tabla users (pero en una columna). También seguimos teniendo "dos espacios" (dos null) y el segundo de ellos es el que permite insertar texto. Todo esto lo vimos en la entrada anterior, que si no has leído, estás tardando.

Hasta aquí tenemos lo mismo que ya habíamos visto, pero ahora debemos concatenar "dentro de un mismo null" la consulta para que nos devuelva el usuario y contraseña.

Vale, pues como os anticipaba, vamos a tirar del cheatsheet para ver como se concatenan los string.

Bien, según la imagen anterior, deberíamos saber cuál es la base de datos para ver como podemos concatenar string. Así que, toca probar cada uno de los mostrados hasta que veamos cuál es la DB.

No es Oracle, no es Microsoft, pero sí que es PostgreSQL.

En la imagen anterior vemos que con version() (la consulta de PostgreSQL) en el segundo null (que es el que admite texto), nos devuelve la versión de la base de datos. Bien, pues ya sabiendo esto, y sabiendo como se concatenan strings en PostgreSQL, la consulta quedaría así.

' union select null, username||'-->'||password from users--

Lo que dejo en ámbar es la "separación" entre el usuario y la contraseña, para que no quede todo junto y sepamos distinguirlo.

Ya está, solo nos queda hacer login con la cuenta de admin para que nos den el lab como resuelto.

Pues continuamos con el quinto lab de la serie de SQLi. En este debemos sacar la versión de la DB siendo esta Oracle. Al ser Oracle, hay que tener en cuenta que tenemos la tabla DUAL que ya viene con este tipo de DB. Así que, partimos de la sentencia:

' union select 'culo', 'culo' from dual --

Como podemos ver, en ambos casos es de tipo string. Así que, podemos elegir cualquiera de los dos, que ambos serán válidos. La consulta final queda así:

' union select null, banner from v$version --

Y con esto hemos resuelto el quito lab. Vamos a por el sexto.

En este último lab de hoy nos piden identificar la versión de la base de datos tanto en MySQL, como en Microsoft. La string es: '8.0.21'.

Para este caso, ojo porque no nos vale la consulta como hasta ahora. Si recordamos, veníamos poniendo esto:

' union select 'culo', 'culo' --

Y como podemos ver, nos está devolviendo un error. Esto es porque dependiendo de la base de datos, el comentario en lugar de ser con --, debemos ponerlo con -- -, ya que si no, como acabamos de ver, nos da error. Estad atentos a estas cosas porque nos las encontramos en la vida real y si no te acuerdas, puedes perder un buen rato e incluso pensar que no hay inyección.

Dicho esto, la consulta en este lab comienza con:

' union select 'culo', 'culo' -- -

Ahora cambiamos los parámetros para sacar la versión y listo.

' union select @@version, null -- -

Por hoy lo vamos a dejar aquí, espero que este año nuevo empiece con mejor pie para todos xD.

Nos vemos en la siguiente.

0 comentarios:

Publicar un comentario