Quien conozca de inyecciones sabe bien que para explotar una Mysqli error based es necesario utilizar las funciones floor() y rand() .
Pero hay otra manera que se basa en aprovechar otro tipo de error, incluso es mucho mas sencilla de interpretar, además de ser un vector corto y eficaz.
Leyendo el blog de Dmitry Evteev en una entrada que habÃa publicado en el 2009 (bastante viejita ya), encontré una forma de explotar un error based de una manera que llamo poderosamente mi atención.
La función extractvalue() sirve para extraer valores de un elemento XML, por ejemplo tenemos la siguiente cadena: <b>q3rv0</b>
Si quisiéramos extraer la palabra q3rv0 lo realizarÃamos de la siguiente manera.
La manera de aprovechar esta función para que nos devuelva información es obligarla a realizar un error de sintaxis.
Que pasa si introducimos la funcion user() en el argumento que es utilizado para extraer ciertos valores.
Como vemos nos arroja el error, además del usuarios en la db.
El problema es que lo muestra entrecortado, para eso vamos a concatenar la salida.
Como podemos llevarla acabo mediante una inyección?
De la siguiente manera.
Mysqli EB con updatexml()
Para este tipo de metodo utilizaremos la funcion llamada updatexml().
Dicha función sirve para actualizar un elemento xml por otro.
Tenemos el siguiente codigo.
La sintaxis de updatexml() es la siguiente:
Entonces si quisieramos actualizar la porcion de codigo:
y cambiarlo por:
Lo hariamos de la siguiente manera.
Saludos!