Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: .:UND3R:. en 7 Mayo 2011, 08:05 am



Título: Dudas con sentencias SQL (para injectar)
Publicado por: .:UND3R:. en 7 Mayo 2011, 08:05 am
Antes que todo, darle las gracias a los que me han ayudado en esto, tanto como los manuales y a los que se han dado la molestia de poner en mi frente los link  :xD

Bueno les cuento he quedado con algunas dudas, comento:

Encontré 2 secuencias para saber los privilegios de usuario

SENTENCIA NUMERO 1

Código:
-1+union+all+select+1,concat(grantee,0x3a,table_schema,0x3a,privilege_type),3,4+FROM+information_schema.schema_privileges--

Este me arroja datos como:
Código:
adds_user@localhost:adds\_adds:SELECT

1-¿esto quiere decir que el usuario adds tiene privilegios SELECT?
y adds\_adds: que es?

SENTENCIA NUMERO 2

Código:
-1+union+all+select+1,concat(grantee,0x3a,privilege_type,0x3a,is_grantable),3,4+from+information_schema.user_privileges--

Este me arroja un solo dato que es:
Código:
add_user'@'localhost':USAGE:NO

2-¿Que diferencia tiene esta sentencia con la 1era?

Les agradecería demasiado que me explicaran tales sentencias... gracias :D

3-para obtener un dato de una columna utilizo esta sentencia

Código:
-1 union all select 1,column_name,3,4 from information_schema.columns where table_name = char(x,x,x) and column_name like char(x,x,x)

en donde x son valores ascii como a=97

¿está bien la secuencia?,¿por qué me arroja una respuesta en blanco?


Título: Re: Dudas con sentencias SQL (para injectar)
Publicado por: tragantras en 7 Mayo 2011, 16:32 pm
1. si, eso quiere decir que el usuario "add_user" tiene privilegios SELECT sobre la tabla adds\_adds

posiblemente la salida esté limitada a un solo resultado con "limit 0,1 " o derivados, porque realmente algun usuario debe tener permisos para hacer SELECT sobre information_schema (sino, no podrías ejecutar esa consulta... obvio, no? XD)

2.

segun MYSQL ( :http://dev.mysql.com/doc/refman/5.1/en/user-privileges-table.html )  esta tabla viene a indicar los permisos globales de cada usuario sobre el sistema, no sobre las tablas en sí


3. Puede ser por mil razones, mira a ver el codigo fuente del html una vez ejecutes la consulta, no vaya a ser que se quede entre etiquetas HTML y no se muestre por eso.
Puede ser porque no estas poniendo las condiciones "where" correctamente (lo más probable)


Título: Re: Dudas con sentencias SQL (para injectar)
Publicado por: Shell Root en 7 Mayo 2011, 18:55 pm
Código
  1. -1+UNION+ALL+SELECT+1,group_concat(column_name),3,4,5+FROM+information_schema.COLUMNS+WHERE+TABLE_NAME=CHAR(117,115,117,97,114,105,111,115,95,108,97,98,105,115,113,108)--


Título: Re: Dudas con sentencias SQL (para injectar)
Publicado por: .:UND3R:. en 7 Mayo 2011, 19:53 pm
tragantras
 gracias por tus aclaraciones

1-en cuando tu te refieres a "condiciones de where correctamente" te refieres que los char() ¿están mal puestos?  :huh:
pero pese a eso

2-¿la secuencia que utilizo está bien?,ahora lo intenté y me arrojó age
y abajo un 3 creo que ese valor tiene, ya que me di cuenta que cuando lo hice anteriormente me faltó un char  :silbar:

3-esta es más de teoría :D,¿Qué determina este comando?,¿n° de columnas o tablas?

Código:
-1 order by 2-- 

Shell Root
Gracias :D


saludos



Título: Re: Dudas con sentencias SQL (para injectar)
Publicado por: tragantras en 8 Mayo 2011, 00:27 am
1- me refiero a que la consulta en sí (despues de haberle echado otro vistazo) tiene poco sentido, estás diciendole que se haga un select de column_name junto a un where column_name = xxx.
Es como decir dime el nombre de una persona cuyo nombre sea pepe. Pues pepe xD

QUe no te muestre información no tiene nada que ver con lo de arriba, solo era un comentario aparte. Prueba a hacer:

-1 union all select 1,column_name,3,4 from information_schema.columns limit 0,1

y mira a ver si te devuelve algo

2- (no entiendo la pregunta, de hecho, no se si hay alguna pregunta xD)

3- la cláusula "order by" le indica al motor de sql que ordene la salida segun el parámetro pasado a continuación, en este caso un 2, que indica que ordene la salida ascendentemente en funcion del segundo campo de la consulta.

El tema está en que si la salida es de 7 campos (la consulta hace select de 7 campos, no tiene pq ser el numero de columnas de una tabla pues pueden hacerse select de varias tablas a la vez) no podrfía hacerse un order by 8, pues no hay un octavo campo, de ahí que se use para determinar el numero de campos de la consulta select y poder reconstruirla con el union all select.


PD: montate un mysql local y aprende SQL anda xD


Título: Re: Dudas con sentencias SQL (para injectar)
Publicado por: .:UND3R:. en 10 Mayo 2011, 01:13 am
Todo entendido, Gracias :D