Inyección de SQL ciego: comprensión de consultas pesadas

2

Este artículo ( PDF ) habla sobre una técnica de inyección ciega basada en consultas pesadas.

Preguntas:

  1. ¿Puede alguien explicarme el propósito de usar consultas pesadas en comparación con las técnicas normales basadas en el tiempo? ¿Es tal vez que, cuando los procedimientos almacenados y las funciones de referencia están deshabilitados, es la única forma de realizar un poco de investigación de vulnerabilidades?

  2. Con referencia a MySQL, el hecho de que demore 30 segundos, ¿qué significa? Mi razonamiento es: si tarda 30 segundos, la consulta inyectada (consulta densa) puede ejecutarse, ya que la consulta se diseñó específicamente para MySQL, la plataforma de la base de datos es MYSQL. Pero ¿qué pasa con el resultado negativo?

  3. ¿Estoy en lo cierto al decir que el enfoque de consulta pesada se usa solo para recuperar información sobre la plataforma de base de datos? En realidad, es otra forma de obtener ese tipo de información. Otros métodos tienen que ver con la función Benchmark aand sleep (MySQL).

pregunta user1990170 28.01.2013 - 11:23
fuente

1 respuesta

0

Creo que la intención es hacer que la consulta tome un período de tiempo largo (medible) en caso de que la consulta se ejecute de una manera particular, y como resultado tome un período de tiempo corto si se ejecutó de otra manera. Esto significa que puede determinar las partes de la consulta que se ejecutó.

Sin embargo, la forma en que interpreta eso depende de cuál fue su consulta original y de lo que ha logrado inyectar en SQL, y no está limitado a determinar las plataformas de bases de datos.

Al usar la inyección ciega de SQL, puede convertir la base de datos en una máquina VERDADERA / FALSA donde puede hacer una pregunta VERDADERA / FALSA sobre cualquier cosa almacenada y obtener una respuesta adecuada, y así puede trabajar lentamente muchas cosas sobre la base de datos .

Ejemplo de la vida real Tuve un caso de inyección ciega de SQL que llevaría mucho tiempo (unos 20 segundos) si alguna consulta inyectada fuera cierta, y regresaría inmediatamente si fuera falsa. Así que dada la cadena de inyección:

value' and 'bob' = (select user from table)--

Puedo enumerar a todos los usuarios del sistema

    
respondido por el Colin Cassidy 28.01.2013 - 11:52
fuente

Lea otras preguntas en las etiquetas