problema SQL Injection: Type mismatch: 'CDBL'

Iniciado por slackbyte, 30 Abril 2009, 04:06 AM

0 Miembros y 1 Visitante están viendo este tema.

slackbyte

Buen dia amigos, aqui vengo posteando (y espero estarlo haciendo en el sitio indicado) ya que ando practicando con SQL Injection (sin ningun fin malefico aclaro... soy etico!) y pues me he topado con un site (no es la primer vez, alguna vez me paso algo similar) en el cual para leer la version pues sabemos que puede ser con:

      'union select @@version --

y me manda lo siguiente: "All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists", entonces lo que prosigue por supuesto es igualar el numero de expresiones que solicita, y voy agregando uno por uno hasta llegar al indicado:

      'union select @@version,1,1,1 --

se supone que ese es el indicado (pues si pongo uno mas dice lo mismo de que tengo que igualar el numero de expresiones), pero el problema es que no me manda la version, si no que me manda lo siguiente:

     Microsoft VBScript runtime  error '800a000d'
     Type mismatch: 'CDBL'
     /acceso.asp, line 79

Parece ser un error sobre casting o algo similar, honestamente le he intentado por todos lados, ademas de investigar un poco, pero no pasa nada =S, incluso levanté mi propio servidor con un formulario que conecte a una bd, pero para nada tengo estos errores, ojala puedan hecharme la mano, se los agradecere mucho!. salu2!

Data Seek3r

Yo tampoco se explotar con VBScript, agradeceria si WHK o algun colaborador de esta sección pondria poner documentacion.

WHK

#2
Hola, la función cdbl() pasa de string a integer para ser procesado en MSsql para un sistema web basado en Visual Basic Script.. ahora, lo que te quiere decir es que el valor ingresado no es válido asi que te lanza ese error para no continuar procesando el valor de la query.

Pude ver en algunos manuales hace un tiempo que este tipo de filtros no debe ser aplicados ya que siempre que alguien inserte un valoir no numerico aparecerá ese error, por el contrario se pueden crear otros tipos de filtros.

Por ejemplo lo mas probable es que en el script esté escrito de la siguiente forma:
Código (vbnet) [Seleccionar]
id = cdbl(request("id"))
Así que cuando quieras insertar una inyección sql en esa variable te arrojará un error pero no te permitirá hacer la inyección ya que la función cdbl está forzando la transformación.


slackbyte

Muchas gracias por tu respuesta, o sea como quien dice, ya no sirve el que trate de inyectar sentencias en sql con ese comando de casting ahi... me queda checar donde se hace la comprobacion, si en el formulario, o en alguna pagina posterior donde se ejecuta la consulta (espero sea el primer caso jeje).