> 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-3.md).

# PortSwigger Lab 3

Resolución del 3º laboratorio de SQLi de PortSwigger. SQL injection UNION attack, determining the number of columns returned by the query

> Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de producto. Los resultados de la consulta se devuelven en la respuesta de la aplicación, por lo que puede utilizar un ataque UNION para recuperar datos de otras tablas. El primer paso de tal ataque es determinar el número de columnas que están siendo devueltas por la consulta. Luego usará esta técnica en laboratorios posteriores para construir el ataque completo.
>
> Para resolver el laboratorio, determine el número de columnas devueltas por la consulta realizando un ataque UNION de inyección SQL que devuelve una fila adicional que contiene valores nulos.

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2Fb247Li9N9sqxBU1ENiWO%2Fimage.png?alt=media&amp;token=44b3fca7-9203-439e-99d3-445416e555c5" alt=""><figcaption></figcaption></figure>

Probamos a usar el `ORDER BY` para enumerar las tablas:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FItmmLzfIYQwOb3fgCP4R%2Fimage.png?alt=media&amp;token=9a5b4564-3a11-483b-86e3-7c035444f661" alt=""><figcaption></figcaption></figure>

Vemos que es vulnerable a una SQLi, pero necesitamos confirmar cuantas columnas tiene, para ello, seguimos aumentando el número del `ORDER BY`. Hasta que llegamos a 4 y nos da un error. En ese punto sabemos que hay 3 columnas:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FayY5kJqyBTzmjAIYNmlX%2Fimage.png?alt=media&amp;token=63ccf2b4-ce80-4ff8-850a-4d1a94d135c0" alt=""><figcaption></figcaption></figure>

Aunque ya sabemos cuantas columnas hay, para resolver el lab, hay que añadir una fila de valores nulos:

<figure><img src="https://271831323-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbbtAYwqVMCAFE0gptbZ0%2Fuploads%2FD1yMZbskhrva7ss7Y71Y%2Fimage.png?alt=media&amp;token=125180b3-9910-46cc-8018-769c97922aa8" alt=""><figcaption></figcaption></figure>
