Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: miguelskk en 7 Julio 2010, 11:50 am



Título: Duda SQLinjection en information_schema
Publicado por: miguelskk en 7 Julio 2010, 11:50 am
Hola.
Ayer practicando algo de inyeccion sql (simplemente educativo nada de defacear eeh ;) ) logre averiguar que habia 25 tablas.
Al ejecutar la sentencia:
union+select+database(),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
para saber el nombre de las bases de datos, pusiera donde pusiera el database() siempre me salia el numero 6 en grande y debajo un numero 5 en grande (aparecia como si se tratase de un comentario, como encabezado y como mensaje y como hora no me acuerdo muy bien la disposicion pero el caso es que los bordes de la página se cargaban normal; el menú y las webs amigas y eso.)

Pense bueno pues vamos a lo siguiente a conseguir el nombre de las tablas y ejecute la sentencia: union+all+select+1,2,table_name,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25+from+information_schema.tables
a lo que me respondio:
Access denied for user: 'root(ponia el nombre del root pero prefiero no indicarlo)@%' to database 'information_schema'

Dije bueno probemos con el limit. Puse:union+all+select+1,2,table_name,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25+from+information_schema.tables+limit+1,1--
Y respondió lo mismo.
Cambié el primer número del limit (el uno) y nada seguia igual.

Es vulnerable porque por ejemplo al poner detras de Id= un uno (quedando asi .php?Id=1); te responde: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND (sección LIKE 'NOTICIAS') ORDER BY Fecha DESC, Id DESC' a

Venga un saludo y gracias :)


Título: Re: Duda SQLinjection en information_schema
Publicado por: cgvwzq en 7 Julio 2010, 12:49 pm
Bueno, lo primero es que no has averiguado que hay 25 tablas. Me explico, cuándo haces una consulta pedirás los campos que quieres ver, cuándo usas "union all select", vas a unir los resultados de la primera selección con los de la segunda. Así que vas a necesitar usar el mismo número de campos. Por ejemplo:

Código:
select * from tabla where c1='x'

Si la tabla "tabla", tiene 3 campos, para poder hacer una unión tendremos que usar "union select 1,2,3". Si la consulta es tal que así:

Código:
select c1,c2 from tabla where c1='x'

Al usar la unión tendremos que hacer "union select 1,2".

Ahora tiene sentido pensar que cuándo usamos el "order by X", estamos diciéndo que los resultados los ordene en función del campo X (si es un campo), o del campo nºX (si es un número). Por eso nos mostrará error si hacemos "order by 4", no hay un 4º elemento respecto al cuál ordenar.

Bién, eso lo primero... Luego, si dices que te muestra un 6 y un 5, significa que esos son los campos que se imprimen en pantalla (podrían corresponder al título y la fecha, por ejemplo). Así que los datos que quieras ver, tendrán que estar en los campos de los números que se muestren por pantalla... Es decir, en tu caso sería:

Código:
union+select+1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25

Si además te muestra un error, léelo. "Access denied for user:", pueder ver que  no tienes permisos para acceder a la base de datos information_schema. Aunque es posible que si puedas consultar las tablas de tu bd, en information_schema. Así que prueba con:

Código:
union+select+1,2,3,4,group_concat(table_name),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 from information_schema.tables where schema_table=database()

Si me he explicado mal o algo dilo y me esfuerzo más. Salu2!



Título: Re: Duda SQLinjection en information_schema
Publicado por: miguelskk en 7 Julio 2010, 13:46 pm
Aaaa ok gracias asique son campos y yo pensando qe eran tablas XD (buen chopo que me he ganado)
Vale vale todo entendido muchas gracias ;), ahora a seguir probando


Título: Re: Duda SQLinjection en information_schema
Publicado por: miguelskk en 7 Julio 2010, 14:03 pm
Hay que cambiar algo en la sentencia de information_schema? quiero decir por ejemplo, cambiar database() por la respuesta que obtengo al ejecutar la sentencia
union+select+1,2,3,4,database(),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25

porque si no, la sentencia que me has indicado tampoco sirve para acceder a information_schema :S

Un saludo y gracias :)


Título: Re: Duda SQLinjection en information_schema
Publicado por: soez en 7 Julio 2010, 14:08 pm
Interesante me habia encontrado con acceso denegado alguna vez y no he sabido seguir, por cierto miguelssk creo que es schema_dabatase=database() en vez de schema_table=database()


Título: Re: Duda SQLinjection en information_schema
Publicado por: miguelskk en 8 Julio 2010, 10:57 am
Gracias por las respuestas pero nada tampoco. Da el mismo error:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(table_name),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,


Título: Re: Duda SQLinjection en information_schema
Publicado por: miguelskk en 9 Julio 2010, 12:54 pm
Bueno problema resuelto ya he conseguido ver en el gran tutorial sobre inyecciones sql en mysql hecho por 6666 y ahi viene explicado.
Por si le interesa a alguien http://foro.elhacker.net/nivel_web/gran_tutorial_sobre_inyecciones_sql_en_mysql-t247535.0.html


Título: Re: Duda SQLinjection en information_schema
Publicado por: tragantras en 10 Julio 2010, 10:32 am
cada 3 dias sale un post de alguien preguntando como se hace una inyección basica, no sería mejor poner en rojo, negrita, fosforito o lo que sea: "leer la sección de "Temas más destacados..." o "google.es"? xD

Por cierto, si no kereis "mancharos" las manos haciendo inyecciones porque no usais una tool de automatización?

Havij es de las mejores que he visto, soporta muchos tipos de inyecciones y en general es muy completa, lo malo que solo funciona para mysql no soporta mssql


Título: Re: Duda SQLinjection en information_schema
Publicado por: OzX en 11 Julio 2010, 21:49 pm
Me alegro que lo solucionate, pero para evitar esos dramas, podria ocuarplo de forma inversa.


+and+1=1+union+select+all+1
+and+1=1+union+select+all+1,2
+and+1=1+union+select+all+1,2,3
+and+1=1+union+select+all+1,2,3,4...n

si te fijas , cuando encuentres el Match, sera una condicion verdadera, por lo tanto vas a visualizr el sitio en su formato original.

Saludos¡


Título: Re: Duda SQLinjection en information_schema
Publicado por: TUNOVATO en 12 Julio 2010, 06:53 am
cada 3 dias sale un post de alguien preguntando como se hace una inyección basica, no sería mejor poner en rojo, negrita, fosforito o lo que sea: "leer la sección de "Temas más destacados..." o "google.es"? xD

Por cierto, si no kereis "mancharos" las manos haciendo inyecciones porque no usais una tool de automatización?

Código:
Havij es de las mejores que he visto, soporta muchos tipos de inyecciones y en general es muy completa, lo malo que solo funciona para mysql no soporta mssql



meda curiosidad de donde lo bajo y como funciona abra un tutorial que me lo explique abra otros mas que hagan la tarea mas facil


Título: Re: Duda SQLinjection en information_schema
Publicado por: TapIt en 17 Julio 2010, 01:46 am
Casualidades de la vida yo tengo el mismo problema pero he estado lellendo el tutorial y no encuentro la solución... le dare alguna vuelta mas pero se agradecería si pudieras concretar un poco más donde se encuentra la solución porque me estoi volviendo loco... muchas gracias ;)

Saludos!!
Lo  que he encontrado es que si no tienes permisos para acceder al information_schema es probando con tablas y columnas al azar. Se que la tabla es "usuarios" y el usuario es "nombre" pero el password no aparece por ninguna parte... he probado con pass password clave llave pero nada de nada... ¿se os ocurre algo?

gracias otra vez ;)

-------------------------------------------------------------------------

Bueno aunque nadie a respondido ya lo he conseguido sacar... saludos!