Buscar

08 marzo 2021

SQLi – Aprendiendo a explotarlo (manopla style) Parte VIII

Estamos entrando ya en la recta final de los laboratorios de PortSwigger, solo nos quedan dos, así que, ánimo y ¡vamos a por todas!

Si aún no has leído las entradas de como explotar un SQLi a mano, te recomiendo que no dejes de leerlas aquí.

En este nuevo lab, ya no usamos la tracking cookie como veníamos haciendo, sino que pasa como al principio, que la inyección está al seleccionar una categoría. Tenemos que hacer que se muestre el detalle de los productos.

La consulta que nos indican en el propio lab, es la siguiente:

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

Para conseguir lo que nos piden, nuestra inyección va a quedar así:

'OR 1=1 --

Que sustituyendo la consulta que nos dan, queda así:

SELECT * FROM products WHERE category = ''OR 1=1 --' AND released = 1

Si devuelve que 1=1 (verdadero), nos debería mostrar todos los artículos. Al poner al final los dos guiones, comentamos lo que aparece a continuación y ya no se ejecuta.

Y ya está, hemos hecho lo que nos pedían, así que, pasamos el lab.

Vamos a por el último. Este es un bypass del login,

Para entender este último reto, voy a poner la consulta que se está realizando por detrás. Cuando hacemos login, sucede esto:

SELECT username, password, FROM users WHERE username = 'culo' AND password = 'culo'

Es decir, le pide a la BD que seleccione el nombre de usuario y contraseña de la tabla users, donde el nombre del usuario sea igual a culo y la contraseña sea igual a culo.

Entonces, podemos saltarnos el login metiendo un comentario detrás del nombre del usuario (que debemos saber que existe) administrator.

SELECT username, password, FROM users WHERE username = 'administrator'--' AND password = 'culo'

Al realizar esa consulta, lo que está en cursiva, desaparecería de la propia consulta, para hacerme entender, la consulta quedaría realmente así:

SELECT username, password, FROM users WHERE username = 'administrator'--

Y para explotarlo satisfactoriamente, solo hay que poner

'administrator'--

En el usuario y lo que queramos en la contraseña.

La otra forma que tenemos de hacerlo es con el clásico:

'or 1=1--

Poniéndolo en el usuario y, en la contraseña, lo que queramos, porque está el comentario y no vale para nada.

Como podemos ver, hemos resulto el lab de las dos formas comentadas.

Y aquí acaban 8 entradas sobre inyecciones SQL a mano (y un poco de Burp xD).

Nos vemos en la siguiente.

0 comentarios:

Publicar un comentario