SQLI Lab 4
Skills
- SQL injection attack, querying the database type and version on MySQL and Microsoft
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una vulnerabilidad
de inyección SQL
en el filtro
de categoría
de productos
. Hay que utilizar un ataque UNION
para recuperar
los resultados
de la consulta, para resolver
el laboratorio
debemos mostrar
la versión
de la base
de datos
Resolución
Al acceder
a la web
nos sale esto
Pinchamos
en alguna de las categorías
, capturamos
la petición
con Burpsuite
y le añadimos
una '
a category
Si enviamos
la petición
nos dará un Internal Server Error
debido a que hemos logrado interferir
con la consulta SQL
que se está haciendo
Si usamos este payload
, ya habremos solucionado
el error
que se estaba produciendo en la consulta SQL
y se mostrará lo siguiente
1
/filter?category=Gifts'+or+1=1+--+-+
Esto se debe a que la consulta SQL
que se debe estar haciendo debe ser esta
1
SELECT * FROM products WHERE category = 'Gifts'
Lo que hacemos cuando inyectamos ' or 1=1-- -
es cerrar la '
del campo category
y usar or 1=1
para que siempre sea verdad y por lo tanto exista, posteriormente con -- -
lo que hacemos es ignorar
el resto de la query
1
SELECT * FROM products WHERE category = 'Gifts' OR 1=1 -- - '
Usando order by
podemos identificar
cuantas columnas
tiene la tabla
, si ponemos un número
de columnas
que existe
no obtendremos ningún error
1
/filter?category=Gifts'order+by+2--+-+
Sin embargo. si ponemos un número
de columnas
que no existe
, obtendremos un error
, esto es debido a que estamos ante una SQLI Error Based
1
/filter?category=Gifts'order+by+3--+-+
A continuación usamos union select
para señalar ambos campos, debido a que la query
no ha dado ningún error
, podemos descartar
que el tipo de base de datos sea Oracle
. Si fuera Oracle
daría un error debido a que hay que añadir from dual
al union select
1
/filter?category=Gifts'+union+select+null,null--+-+
Con @@version
podemos enumerar
la versión
de las bases
de datos
de Microsoft
y las MySQL
1
/filter?category=Gifts'+union+select+null,@@version--+-+
También es posible enumerar
las bases de datos MySQL
usando version()
en ciertos casos
1
/filter?category=Gifts'+union+select+null,version()--+-+