
Descripción
This lab contains a SQL injection vulnerability in the product category filter. You can use a UNION attack to retrieve the results from an injected query.
To solve the lab, display the database version string.
SQL injection attack, querying the database type and version on Oracle writeup
Este laboratorio deberemos de resolverlo en cuatro pasos:
Encontrar la petición vulnerable a SQL injection:
Accedemos al laboratorio y capturamos un filtrado de productos con el ‘Logger’ de Burp Suite:

Enviamos esta petición al ‘Repeater’ con Ctrl + R o Click derecho -> Send to Repeater. Ahí podremos trabajar.
Determinar el número de columnas que devuelve la petición
Para ello usaremos la técnica del laboratorio SQL injection UNION attack, determining the number of columns returned by the query. La petición será la siguiente:
GET /filter?category=Gifts'+UNION+SELECT+NULL,+NULL+from+dual--
Nota: Se ha añadido la tabla ‘dual’ porque estamos trabajando con una base de datos Oracle y todas las peticiones deben de tener una tabla. La tabla ‘dual’ existe en todas las bases de datos de este tipo.
En este caso la petición devuelve 2 columnas:

Determinar qué columna devuelve texto
Debido a que queremos obtener la versión (texto), tendremos que realizar un UNION attack con otra columna que devuelva texto. Para ello usaremos el código explicado en el laboratorio SQL injection UNION attack, finding a column containing text. La petición será la siguiente:
GET /filter?category=Gifts'+UNION+SELECT+NULL,+'cyberhub.es'+from+dual-- HTTP/2

En este caso la columna que devuelve texto es la segunda.
Obtener la versión de la base de datos
Cambiaremos el código por el siguiente:
GET /filter?category=Gifts'+UNION+SELECT+NULL,+BANNER+from+v$version-- HTTP/2
- v$version: Es la tabla de la base de datos Oracle que contiene información técnica de esta.
- BANNER: Es la columna que existe en la tabla ‘v$version’ con información sobre la versión de la base de datos.
Obtendremos la siguiente información:

Y completaremos el laboratorio:
