You are on page 1of 1

1 Caso: utilizar SQLi para saltarse la seguridad de un Login

Cuando tu presionas aceptar en el botn de Login, se enva un consulta SQL al servidor de MySQL solicitando los usuarios que coincidan con los datos que vos ingresaste, usuario y contrasea.

Cdigo: [Seleccionar]
SELECT ID FROM usuarios WHERE usr_user = '$usuario' AND usr_pass = '$pass'

Cdigo: [Seleccionar]
SELECT ID FROM usuarios WHERE usr_user = 'admin' AND usr_pass = 'cs123'

Esto significa: Seleccionar ID de usuario donde el nombre de usuario sea admin y la contrasea sea cs123. Si esta consulta devuelve datos, significa que haz ingresado "usuario" y "contrasea" correctos y por lo tanto se te dejar pasar a la siguiente pgina, es decir, estars logueado. De lo contrario, si no devuelve nada, significar que haz ingresado mal los datos y no te permitir continuar. Ok, pero que sucede si queremos ingresar sin tener la contrasea del usuario? Podemos utilizar SQLi, en el caso de que el login sea vulnerable. Por ejemplo, si ingresamos: usuario: admin contrasea: 'or'1'='1 Obtendremos la siguiente consulta

Cdigo: [Seleccionar]
SELECT ID FROM usuarios WHERE usr_user='admin' AND usr_pass='[color=red]'or'1'='1[/color]'

Esto significa: Seleccionar el ID de usuario donde el nombre de usuario sea admin y la contrasea sea "nada/vacio" O en donde 1=1. Como la condicin 1=1 es siempre verdadera, la consulta devolver todos los registros, ya que todos cumplen con este requisito. Las comillas simples son ingresadas para cortar el campo "pass" y poder inyectar cdigo SQL arbitrariamente y obtener los datos que tu necesites.

Caso 2: obtener datos con un UNION


Este es el caso que yo te di como ejemplo, talvez un poco avanzado para lo que tu ests leyendo. - index.php es un archivo de codigo php. - ?id es un parmetro que paso a este archivo. Este contendr el ID de un registro que quiero consulta. - 54 es el ID del registro que quiero consultar. Por ejemplo, estamos en un catlogo de artculos. Elegimos ver el detalle del artculo n 85. Obtendremos la siguiente url:

Cdigo: [Seleccionar]
http://catalogoonline.com.ar/ver_detalle.php?id=85

El archivo "ver_detalle.php" me mostrar el artculo nmero 85. Ok, vamos a ver como podemos inyectar esto. Aqui aparece al clusula UNION. Esta nos permite unir dos resultados de consulta, es decir combinarlos. Puedes leer mucho ms aqui. Entonces vamos a suponer que tenemos la siguiente URL

Cdigo: [Seleccionar]
http://catalogoonline.com.ar/ver_detalle.php?id=85 Esto generar la siguiente consulta SQL:

Cdigo: [Seleccionar]
SELECT ID, nombre, precio, cantidad FROM artculos WHERE ID = 85

Si inyectamos en la URL, utilizando la clusula UNION obtendremos el siguiente resultado:

Cdigo: [Seleccionar]
http://catalogoonline.com.ar/ver_detalle.php?id=85+UNION+SELECT+id,user,nombre,pass+FROM+usuarios

Cdigo: [Seleccionar]
SELECT ID, nombre, precio, cantidad FROM artculos WHERE ID = 85 UNION SELECT id,user,nombre,pass FROM usuarios

Esto nos devolvera un nuevo resultado compuesto por "artculos" y "usuarios". Hemos obtenido datos de los usuarios (talvez algn administrador) a traves de una SQLi en un archivo que me muestra detalle de artculos, utilizando la clusula UNION. Bueno, creo que es todo jaja. Recuerda, te recomiendo que guardes esta respuesta y estudies un poco ms. Luego vers que ser mucho ms facil.

You might also like