SQL injection vulnerability allowing login bypass
Laboratorio de Portswigger sobre SQLI
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una vulnerabilidad
de inyección SQL
en la función de inicio
de sesión
. Para resolver
el laboratorio
, hay que realizar una inyección SQL
que inicie sesión en la aplicación como el usuario administrador
Guía de SQLI
Antes
de completar
este laboratorio
es recomendable leerse
esta guía de SQLI
https://justice-reaper.github.io/posts/SQLI/
Resolución
Al acceder a la web
nos sale esto
Vemos que hay un apartado llamado My account
, si pinchamos en él, nos llevará a un panel
de login
Introducimos administrator' or 1=1-- -
en el campo username
y cualquier cosa en el campo password
Hemos logrado baipasear
el panel de login
, esto se debe a que por detrás, la consulta
que se está realizando debe de ser parecida a esta
1
SELECT * FROM users WHERE username = 'user' AND password = 'password'
Entonces, con nuestra inyección SQL
estamos cerrando
la comilla '
que está abierta
, posteriormente estamos introduciendo
una condición
que siempre
es verdadera
, la cual es un OR
lo que hace que independientemente del nombre introducido accederemos
al panel administrativo
. La última parte sirve para ignorar
el resto
de la sentencia SQL
1
SELECT * FROM users WHERE username = ''OR 1=1 -- - ' AND password = 'password';