> For the complete documentation index, see [llms.txt](https://docs.pabloarrabal.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pabloarrabal.com/explotacion/vulnerabilidades/sql-injection-sqli/portswigger-lab-1.md).

# PortSwigger Lab 1

Resolución del 1º laboratorio de SQLi de PortSwigger

En este laboratorio, tenemos que aplicar una inyección sql en la clausula `WHERE` que nos permita ver datos ocultos

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FxnYHrCn6QmPefFNyaOgj%2Fimagen.png?alt=media&amp;token=46949ae1-073f-43ff-9a73-2bce35932ca2" alt=""><figcaption></figcaption></figure>

En este caso nos especifica que la inyección se encuentra en la parte de categorías.

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2F79DDIgRnsvRPkRxZnQns%2Fimagen.png?alt=media&amp;token=43a39d45-56a0-41df-85dc-04b2847681ee" alt=""><figcaption></figcaption></figure>

Como podemos ver, si aplicamos un filtro, se aplica un parametro, ahí tenemos que realizar la inyección sql:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FVM7xCksD2Rl2Z1FL5VpJ%2Fimagen.png?alt=media&amp;token=4e3eaf6f-2a00-4ff0-80db-2234cd44e342" alt=""><figcaption></figcaption></figure>

Para probar si es vulnerable a SQLi, podemos hacer lo siguiente:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FgAFdiUf4ifLcqI8xir80%2Fimagen.png?alt=media&amp;token=add952f4-1e48-4537-9ad8-d93db1392b78" alt=""><figcaption></figcaption></figure>

En este caso lo que hacemos es añadir una comilla simple y a continuación añadir dos guiones seguidos de un espacio y otro guion (los guiones se utilizan para comentar consultas). Nosotros suponemos que el código no esta bien sanetizado, por lo que podremos añadir una comilla y descomentar el código que haya detrás como en este ejemplo.

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2F55Jvm3PXQBNy7fwet1Qq%2Fimagen.png?alt=media&amp;token=c8763ce0-e146-419b-8048-ec5e22957ff7" alt=""><figcaption></figcaption></figure>

Esta es la prueba de que este parámetro es vulnerable a SQLi, pero si nos fijamos en el antes y el después:&#x20;

<div><figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FxCh4Hom0BerzLFGHyAsr%2Fimagen.png?alt=media&amp;token=31d0e553-e51c-4fe0-8b92-8d6519e3b3ec" alt=""><figcaption></figcaption></figure> <figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FSWFSmIvnpHhLNQFnmICE%2Fimagen.png?alt=media&amp;token=0544d54e-a466-48c9-844b-6d982e1cfa7b" alt=""><figcaption></figcaption></figure></div>

Como podemos observar, cuando hacemos la SQLi, y comentamos el posible codigo que exista detrás del parámetro, se añade un producto a la web. Esto pasa porque la consulta que se realiza por detrás es esta:

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

Cuando nosotros hacemos la inyección, comentamos parte de la consulta que nos muestra solo los productos lanzados.

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