inyección SQL con consulta de una sola declaración

6

Supongamos que tengo una consulta vulnerable como esta:

var q = 'SELECT x FROM y WHERE id = ' + req.body.id + ' ORDER BY date DESC;';

A los efectos de esta pregunta, req.body.id podría ser cualquier parámetro entero que no esté verificado, ya que todo a través de HTTP es una cadena.

Como la extensión MySQL deshabilita las consultas de múltiples declaraciones de manera predeterminada, no puedo hacer algo como:

http://example.net/foo?id=1;INSERT INTO y VALUES (things...);--

¿Es posible ejecutar una declaración de manipulación de datos (como INSERTAR, ACTUALIZAR, BORRAR) con esta consulta vulnerable?

    
pregunta Cory Carter 23.10.2014 - 04:58
fuente

1 respuesta

4

Inyectar una declaración de consulta de pila solo es posible si la aplicación de destino está usando MySQL Multi-Query interface . La gran mayoría de la inyección de SQL no permite el apilamiento de consultas. El apilamiento de consultas es útil, pero puede acceder a la base de datos e incluso abrir un shell sin ella. SQLMap puede realizar estos ataques.

El apilamiento de consultas se usa más comúnmente en la documentación sobre inyección de sql que en el mundo real. Probablemente esto se deba a que es más fácil explicar la inyección de SQL mediante una demostración de apilamiento de consultas.

    
respondido por el rook 23.10.2014 - 05:37
fuente

Lea otras preguntas en las etiquetas