🧛Laboratorio: ataque UNION de inyección SQL , recuperando múltiples valores en una sola columna

En este caso podremos recuperar multiples valores en una sola columna con el secreto del hechizo: Concatenación jeje ;)

Realizando una consulta para retornar multiples valores:

Podemos usar el doble Pipe que es un operador OR en algunos lenguajes sin embargo en bases de datos del tipo ORACLE, sirve como un separador, asi:

Por eso es muy importante saber cual es la BD que uno va a atacar (eticamente, claro) para así mismo poder saber cual es el comando SQL que uno va a inyectar porque no todas las bases de datos funcionan igual, mantienen en sintaxis ciertas cosas similares pero no todo es lo mismo.

Cualquier duda sobre comandos en SQL Para un tipo de BD especifica, dejo esta url:

' UNION SELECT username || '~' || password FROM users--

Entonces lo que estaremos haciendo será separar mediante “~” el user de la pass.

  • Punto importante que dejamos pasar, debemos hacer ciertas cosas:

    • Saber cual es el numero de columnas, con NULL

    • Determinar que columnas son compatibles con una cadena, si hay mas de una, Nullear una y la otra dejarla para añadir el separador.

En este caso hicimos la inyeccion:

'+UNION+SELECT+NULL,'abc'-- 
#que nos determino que la columna 2 es cadena. 
La segunda columna es de cadena

¿Como inyectamos esto en la URL?

Nos arrojo error la inyeccion SQL de abajo donde concatenamos todo en +, pero estamos en una BD de Oracle, es con || ‘~’ ||

'+UNION+SELECT+NULL,username||'~'||password+FROM+users--

Aquí podemos ver como esta consulta si nos arrojo con exito la lista de users y contraseñas separadas por el caracter “~”, ahora bien ingresamos como admin y ureka exito el Lab.

administrator~1nv9n7aotp0yqxps8pyo


wiener~f49691bt9lzqmwmn71rf


carlos~gkj9nytdlyheiqpez5s0

Eso es todo, gracias por leerme :)

Last updated