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?