¿En qué se diferencia la inyección SQL basada en el tiempo de otros tipos de inyección SQL?

11

Entiendo qué es una inyección SQL basada en el tiempo, y entiendo cómo funciona (al menos cómo se detecta / explota).

Sin embargo, ¿hay algo en específico que haga que este tipo de inyección sea diferente a decir inyección ciega a base de booleanos?

Lo que digo es si tomas el siguiente código:

<?php
$x = 'admin" AND SLEEP(10)#';
$y = 'superSecretPassword';
$query = sprintf('SELECT * FROM users WHERE username="%s" AND password="%s"', $x, $y);
echo $query;
?>

que da como resultado el siguiente resultado:

SELECT * FROM users WHERE username="admin" AND SLEEP(10)#" AND password="superSecretPassword"

Eso es vulnerable a casi todas las formas de SQLi.

Supongo que mis preguntas son:

a) ¿Por qué elegirías realizar una inyección de SQL basada en el tiempo sobre cualquier otro método de inyección, dado que el tiempo se demora y es posiblemente más detectable que otros métodos?

b) (Ejecutar SQLMap o herramientas similares en este caso) ¿Cómo es que otros métodos fallan, pero está presente la inyección SQL basada en el tiempo?

    
pregunta DarkMantis 23.10.2013 - 15:58
fuente

1 respuesta

11

No es diferente en valor a la Inyección de SQL Ciego "normal", es simplemente diferente en la forma de explotación.

La única razón real para ir en función del tiempo (aparte de aprender, por supuesto), es si los otros tipos de SQLi no están disponibles. La misma razón por la que se molestaría con el SQLi ciego "normal", en lugar del SQLi normal.

SQLi ciego "regular" depende de recuperar algo , incluso si solo es un bit diferente. Es fácil imaginar un escenario donde los bits CERO se filtran directamente, por ejemplo. una aplicación que borra la respuesta, devuelve una única respuesta estática sin importar lo que ocurra en la base de datos.

En tal situación, Blind SQLi no ayudaría. Por lo tanto, se ve obligado a recuperar ese bit único de información de otras maneras, es decir, el retraso de tiempo. Ahora, el resto de las técnicas de Blind SQLi pueden intervenir, en base a este bit de información indirecta.

Entonces, para responder sus preguntas directas en orden inverso:

  

b) ¿Cómo es que otros métodos fallan, pero está presente SQLi basado en el tiempo?

Porque la aplicación no devuelve ni un solo bit de información directamente, aunque sea inyectable.

  

a) ¿Por qué elegirías realizar un SQLi basado en el tiempo sobre cualquier otro método de inyección, ya que el tiempo demora tanto y es posiblemente más detectable que otros métodos?

Porque (b).

    
respondido por el AviD 23.10.2013 - 16:16
fuente

Lea otras preguntas en las etiquetas