SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Laboratorio de Portswigger sobre SQLI
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
contiene una vulnerabilidad
de inyección SQL
en el filtro
de categoría
de productos
. Cuando el usuario selecciona una categoría
, la aplicación realiza esta consulta
SQL SELECT * FROM products WHERE category = 'Gifts' AND released = 1
. Para resolver el laboratorio hay explotar un SQL Injection
que haga que la aplicación muestre uno o más productos no lanzados
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
Si hacemos click
en alguno de los filtros
, nos filtrará los artículos por esta categoría
Capturamos
la petición
con Burpsuite
y añadimos
una comilla simple '
Si enviamos esta petición nos devolverá un Internal Server Error
, lo cual quiere decir que estamos interfiriendo
con la consulta SQL
que se está produciendo
Si usamos este payload
mediante el cual añadimos una comparación que siempre
es verdad
como 1=1
, ignoramos el resto de la consulta SQL con -- -
y enviamos la petición nuevamente no obtenemos ningún fallo. Esto quiere decir que la inyección SQL
ha sido exitosa
y nos devuelve todos los productos, independientemente de la categoría a la que pertenecen
1
/filter?category=Clothing%2c+shoes+and+accessories'+or+1=1--+-