También quiero empezar una serie de post sobre la vulnerabilidad SQLi (inyección SQL) de los laboratorios de la gente de PortSwigger. Vamos a ver como resolver unos cuantos labs de menos a más, pero corre de tu cuenta leer antes al respecto, sobre que es, comandos básicos, etc. porque no me voy a detener a explicar todo. Tienes miles de guías de iniciación en todos los idiomas.

Voy a "definir" brevemente que es esto de SQLi, con mis palabras (si quieres saber más o una mejor definición, googlea xD).
Empezaré haciendo alusión al lenguaje SQL (Structured Query Language) que nos permite interactuar con las bases de datos. Hoy en día, casi todas las webs ya utilizan bases de datos para almacenar usuarios, contraseñas, teléfonos, emails, etc.
Por lo tanto, una inyección SQL, consiste en tratar de insertar código ilegítimo que compromete la base de datos. Así, muy resumidito. Vamos a lo que importa.
Vale, arrancamos con el primer lab que nos dice que debemos determinar el número de columnas realizando un ataque UNION (para más info sobre esto, busca algún curso de SQL si no lo tienes claro).
Abrimos el lab y nos encontramos la típica tienda. Al leer el enunciado del lab, nos dice que el parámetro vulnerable es category. Una forma de saberlo es poner la clásica comilla detrás del igual.

Ya sabemos que el parámetro es vulnerable (habrá otros en los que no se muestre un error), ahora vamos al lío.
A través del parámetro UNION, vamos a determinar el número de columnas, que al final es lo que nos piden.
En este caso, una de las formas de hacerlo de manera manual, es poner los valores null para determinar el número de columnas. Empezaríamos poniendo uno, luego dos, luego tres, etc. Esto es:
' union select null, null, null --
Esto lo que hacer es probar si tiene tres columnas (3 null) y le ponemos el doble guion para comentar todo lo que haya detrás (ahora parece que no tiene mucho sentido, pero en otros momentos es interesante conocerlo).

Pues ya está, hemos pasado el primer lab. Vamos a por el segundo. A partir de aquí voy a intentar ir más rápido y enrollarme menos xD.
Mismo parámetro vulnerable, pero en este caso, además del UNION nos dan un string que debemos mostrar a través de los resultados de la consulta.
Partimos de la última consulta de los null que habíamos realizado en el lab anterior.
' union select null, null, null --
Y ahora debemos ir jugando con cada parámetro null, modificando su valor para ver si es integer, varchar, etc. Básicamente, ver en cuál de ellos se puede pasar una cadena de texto y se refleja.
' union select 'a', null, null --
' union select null, 'a', null --
En el primer caso, al poner (no olvidemos que debe ir entre comillas) la letra a en el primer null, nos da error, por lo tanto sabemos que ahí no podemos imprimir la cadena de texto.
En el segundo caso, sí que nos deja, porque aparece reflejado en la web.

Por lo tanto, es en ese espacio dónde debemos poner el texto que nos piden e imprimirlo para pasar el lab (en mi caso es 13DDtX, pero es aleatorio).

Listo, hemos terminado. Como podrás ver, esto va de menos a más, así que, sin más dilación vamos a por el lab tres.
Ahora nos piden que consigamos información de otras tablas, en este caso de la users y de las columnas username y password. El parámetro vulnerable sigue siendo category.
En este caso solo contamos con dos "espacios", es decir, dos campos null, no tres como en los anteriores. Para conocer esto, se puede hacer, por ejemplo, utilizando order by, que nos ayuda a "localizar los espacios". No me enrollo, para más info, busca en Google xD.
Partimos de esta consulta:
' union select null, null --
Para este lab, tenemos que cambiar "los espacios" null, por los nombres de las columnas que nos dieron, de la tabla users.
' union select username, password from users --

Ya lo tenemos, pero nos sigue apareciendo que no está resuelto, así que, vamos a identificarnos con el usuario administrator y su contraseña.

Y ahora si, ya hemos pasado el lab. Hasta aquí como veis, no hay prácticamente ninguna dificultad, es solo saber un poco que SQL para lograr pasarlos. En próximas entradas veremos la resolución de otros 3 labs.
Nos vemos en la siguiente. Ah, y feliz año y esas mierdas xD.
0 comentarios:
Publicar un comentario