Duda SQLinjection en information_schema

Iniciado por miguelskk, 7 Julio 2010, 11:50 AM

0 Miembros y 1 Visitante están viendo este tema.

miguelskk

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 :)
Ellos levantan muros y vallas por todas partes, nosotros respondemos escribiendo nuestros nombres, ellos se cabrean y dicen que eso no es arte.

cgvwzq

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:

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í:

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:

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:

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!

Some stuff:

  • www.a] parsed as www.a]
  • Bypass elhacker's img filter with ALT attribute!
  • ¿Para cuándo SQLi I y II? WZ



miguelskk

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
Ellos levantan muros y vallas por todas partes, nosotros respondemos escribiendo nuestros nombres, ellos se cabrean y dicen que eso no es arte.

miguelskk

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 :)
Ellos levantan muros y vallas por todas partes, nosotros respondemos escribiendo nuestros nombres, ellos se cabrean y dicen que eso no es arte.

soez

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()
01001010 01100001 01110110 01101001 01100101 01110010

miguelskk

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,
Ellos levantan muros y vallas por todas partes, nosotros respondemos escribiendo nuestros nombres, ellos se cabrean y dicen que eso no es arte.

miguelskk

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
Ellos levantan muros y vallas por todas partes, nosotros respondemos escribiendo nuestros nombres, ellos se cabrean y dicen que eso no es arte.

tragantras

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
Colaboraciones:
1 2

OzX

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¡

TUNOVATO

Cita de: 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



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