Introducción
LABORATORIO 3: SQL injection attack, querying the database type and version on Oracle
En esta ocasión vamos a resolver el Lab 3 sobre SQLi de PortSwigger Academy.
Esta práctica de laboratorio requiere que realice una inyección SQL basada en UNION para recuperar la cadena de la versión de la base de datos. Podemos utilizar las mismas técnicas que hemos desarrollado hasta ahora.
Entonces, debemos realizar un ataque basado en UNION de inyección SQL para recuperar el número de versión de la base de datos. Es específico de las bases de datos de Oracle, por lo que la sintaxis puede ser diferente según el tipo de base de datos que esté probando.
Solución
PASO 1: Detectar la versión SQL
Necesitamos usar ‘ FROM DUAL’ ya que es una base de datos Oracle. Una vez que hayamos determinado que hay dos columnas, podemos determinar qué columnas contienen texto (deberían ser ambas en este laboratorio).
'+UNION+SELECT+NULL+FROM+DUAL --
'+UNION+SELECT+NULL,NULL+FROM+DUAL--
Una vez determinado que existen dos columnas, vamos a determinar que columnas contienen texto.
PASO 2: Determinar que columna contiene datos
'+UNION+SELECT+’abc’,NULL+FROM+DUAL--
'+UNION+SELECT+’abc’,’def’+FROM+DUAL--
PASO 3: Determinar la versión de la base de datos
Ahora que sabemos que ambas columnas contienen texto, podemos realizar una petición que nos muestre la versión de la base de datos. Podemos elegir que columna queremos que se inyecte la petición al mismo tiempo que debemos proporcionar el valor NULL a la columna que no vayamos a utilizar.
'+UNION+SELECT+BANNER,NULL+FROM+v$version--
Luego agregamos la consulta a la solicitud y el resultado se debe mostrar en la respuesta de la aplicación
Y el laboratorio estaría resuelto.
No responses yet