Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: odeONeSs en 16 Enero 2009, 00:34 am



Título: Inyeccion SQL (mysql) UPDATE dentro de un SELECT
Publicado por: odeONeSs en 16 Enero 2009, 00:34 am
Os cuento mas o menos, he conseguido sacar todas las tablas, pero al intentar hacer un update me salta un filtro por la comilla, ya que al poner comilla simple el codigo php lo remplaza por '\\\'.


Código
  1. http://www.web.com/noticia.php?id=-1'; UPDATE Basededatos.noticias+SET+breve+=+0x4572726f72+WHERE+id+=+8+;/*
  2.  
El error que devuelve es este:

Código
  1. You have an error in your SQL syntax; check the manual that
  2. corresponds to your MySQL server version for the right syntax to use near
  3. '\\\';UPDATE web.noticias SET breve = 0x4572726f72 WHERE id = 8 ;/*' at line 1

Alguna vez os habeis encontrado con esto? alguna idea?

Gracias de antemano!


Título: Re: Inyeccion Sql Filtro
Publicado por: Darioxhcx en 16 Enero 2009, 08:01 am
con information_schema trataste ?
o no existe ?? emmmmm


Título: Re: Inyeccion Sql Filtro
Publicado por: WHK en 16 Enero 2009, 08:48 am
intenta sacarlo sin comillas para ver si realmente es necesario;
http://www.web.com/noticia.php?id=1 and 1=1
Si no te funciona y obligadamente necesitas escapar con esa comilla no puedes hacer nada por los slashses que agrega el php.


Título: Re: Inyeccion Sql Filtro
Publicado por: odeONeSs en 16 Enero 2009, 13:44 pm
con information_schema trataste ?
o no existe ?? emmmmm

Si si, tengo la tabla donde quiero hacer el UPDATE, las columnas y he hecho pruebas haciendo consultas, vamos que si que existe.

Leyendo por ahi... he intentado aplicar esto... pero na da..

Por cierto WHK http://www.web.com/noticia.php?id=1 and 1=1 Esto no me tira error, debe ser que los slashses estan puestos para evitar los strings.

Código
  1. http://www.web.com/noticia.php?id=-1+and+(UPDATE+Basededatos.noticias+SET+breve+=+0x4572726f72+WHERE+id+=+8+)=1/*
  2.  
Código
  1. You have an error in your SQL syntax; check the manual that
  2. corresponds to your MySQL server version for the right syntax to use near
  3. 'UPDATE Basededatos.noticias SET breve = 0x4572726f72 WHERE id = 8 )=1/*' at line 1

Alguna idea???

Muchas gracias!!


Título: Re: Inyeccion Sql Filtro
Publicado por: pepeluxx en 13 Febrero 2009, 16:24 pm
Código
  1. http://www.web.com/noticia.php?id=-1+and+(UPDATE+Basededatos.noticias+SET+breve+=+0x4572726f72+WHERE+id+=+8+)=1/*
  2.  

No puedes meter un update dentro de un select  :rolleyes:


Título: Re: Inyeccion Sql Filtro
Publicado por: Krackwar ™ en 16 Febrero 2009, 22:28 pm
hay no veo ningun select  :P


Título: Re: Inyeccion Sql Filtro
Publicado por: Azielito en 17 Febrero 2009, 00:37 am
jahahahahah!!!!

y entonces como hacen para obtener los registros de la base de datos?

el SELECT va implicito :D al hacer una consulta a tu base de datos


Título: Re: Inyeccion Sql Filtro
Publicado por: Krackwar ™ en 17 Febrero 2009, 02:01 am
No te rias toy enfermo a si que no tengo todas mis neuronas funcionando  :¬¬ .

Si , cierto que el select esta en el noticia.php.


Título: Re: Inyeccion Sql Filtro
Publicado por: Azielito en 17 Febrero 2009, 17:42 pm
perdon, es que me hizo gracia :xD

no es personal pues, disculpa...

Te explico

cuando haces una web que toma datos de una base de datos, para recuperar haces algo parecido a esto
Código
  1. SELECT * FROM `noticias` WHERE id=$_GET['id']
  2.  

Siempre haces eso (es un ejemplo xD) cuando haces un sistema de noticias, pero siempre tienes un "select" lo que hacemos a la hora de una SQLinjection es modificar ese "SELECT"

quedando algo así

Código
  1. SELECT * FROM `noticias` WHERE id=-1 AND UNION SELEC 0,1,2.....
  2.                                  ^aqui nuestro code

o sea que, el "SELECT" va implicito :o


Título: Re: Inyeccion Sql Filtro
Publicado por: Krackwar ™ en 17 Febrero 2009, 18:00 pm
perdon, es que me hizo gracia :xD

no es personal pues, disculpa...

No importa  ;D

Citar
Te explico

cuando haces una web que toma datos de una base de datos, para recuperar haces algo parecido a esto
Código
  1. SELECT * FROM `noticias` WHERE id=$_GET['id']
  2.  

Siempre haces eso (es un ejemplo xD) cuando haces un sistema de noticias, pero siempre tienes un "select" lo que hacemos a la hora de una SQLinjection es modificar ese "SELECT"

quedando algo así

Código
  1. SELECT * FROM `noticias` WHERE id=-1 AND UNION SELEC 0,1,2.....
  2.                                  ^aqui nuestro code

o sea que, el "SELECT" va implicito :o

Si me lo explicabas a mi , ya lo se  :xD si se hacer consultas desde PHP  ;) , aunque nunca esta de mas una explicacion para los que no entienden  ;)


Título: Re: Inyeccion Sql Filtro
Publicado por: sirdarckcat en 17 Febrero 2009, 18:23 pm
no puedes hacer un UPDATE si ya estas en el contexto de un SELECT. en MySQL no se pueden hacer varias queries por consulta. (como en mssql).

Saludos!!


Título: Re: Inyeccion SQL (mysql) UPDATE dentro de un SELECT
Publicado por: ChElAnO en 18 Febrero 2009, 17:54 pm

Hola,

es necesario cerrar esa comilla??

Si la variable id es un string, es necesario. Pero si es entero tal vez puedes intentar

noticia.php?id=1;UPDATE+Basededatos.noticias+SET+breve+=+0x4572726f72+WHERE+id+=+8/*

saludos


Título: Re: Inyeccion Sql Filtro
Publicado por: HardieVon en 22 Febrero 2009, 06:55 am
no puedes hacer un UPDATE si ya estas en el contexto de un SELECT. en MySQL no se pueden hacer varias queries por consulta. (como en mssql).

Saludos!!

Ya que si fueze  con oracle pues si se puede hacer multiples consultas.

; UPDATE

pero es raro


Yo tengo una duda, entonces el chabal como le podria hacer para insertar o hacer update a esa base de datos.


Título: Re: Inyeccion SQL (mysql) UPDATE dentro de un SELECT
Publicado por: odeONeSs en 23 Febrero 2009, 03:52 am
Sirdarckcat gracias!! creia q si se podian hacer varias funciones en una sola cadena! ... necesitaria que las magic quotes estuviesen desactivadas para cerrar la comilla.. ya que es un string..  en fin..

Siempre nos quedará el hash en md5 del admin... jjejeje... (descifrado ya por cierto)

Un saludo y muchas gracias a todos!! :)


Título: Re: Inyeccion SQL (mysql) UPDATE dentro de un SELECT
Publicado por: OzX en 27 Febrero 2009, 17:40 pm


Ejemplo de Como Seria.
MSSQL (Lo digo por el ;  XD¡)

Código
  1. SELECT email, passwd, login_id, full_name
  2.  FROM members
  3. WHERE email = 'x';
  4.      UPDATE members
  5.      SET email = 'steve@unixwiz.net'
  6.      WHERE email = 'bob@example.com';

http://www.unixwiz.net/techtips/sql-injection.html (http://www.unixwiz.net/techtips/sql-injection.html)

Saludos¡