Ver Mensaje Individual
  #21  
Antiguo 15-04-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
¡Vaya! Parece que seguimos esquivos. El caso es que no dan un sólo ejemplo de inyección de código debido al uso de % sin parámetros. He visto algunos ejemplos pero se deben en realidad al uso de apóstrofos. Creo que soy de la opinión de Delphius.

Eso, o simplemente no les parece adecuado compartir sus conocimientos.

// Saludos
Es porque te has centrado en la parte de "rompimiento" y no en la de "extracción de información".

Hacer un
Código SQL [-]
drop table
es un daño, pero aparte de tumbar el servicio no provee una ventaja. El ejemplo de los apostrofes es para obtener acceso (login) o eliminar un filtro del SQL.

Ahora bien, una vez estas dentro, que es lo que sigue? Si no estas buscando tumbar el servicio, la opción logica es minar información. Es este punto donde entra el asunto del '%':

Extraer info de los usuarios (averiguar la info de Bob):

http://www.unixwiz.net/techtips/sql-injection.html
Cita:
We can do the query on email name or full name (or presumably other information), each time putting in the % wildcards that LIKE supports:
Código SQL [-]
SELECT email, passwd, login_id, full_name
  FROM members
 WHERE email = 'x' OR full_name LIKE '%Bob%';

Injectando el sql desde un query de pagina & deduciendo la tabla que tiene los logins de usuarios:

http://www.securiteam.com/securityre...DP0N1P76E.html
Cita:
We also can search for data using LIKE keyword:
Código SQL [-]
http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--

Osea, lo que falto aclarar antes es que el ejemplo clásico de inyección es de rompimiento (acceso), pero una vez dentro, es uso mas "tradicional" del sql, el conocimiento del lenguaje, el tipo de motor, entorno, etc. Hay se usa el rango completo, como acceso a tablas de sistemas, funciones, comandos de búsqueda (donde entra el %!!!), etc...

El error mio fue presumir que era obvio que se puede usar cualquier comando del SQL con una inyección, sin ser claro en el porque..

Es por eso que se puede usar el '%' para una inyección, es cosa de darse cuenta que la inyección no solo rompe, sino que tambien extrae información.
__________________
El malabarista.
Responder Con Cita