I understand what a time-based SQL injection is, and I understand how it works (at least how it's detected/exploited).
However, is there anything in specific which makes this type of injection any different to say boolean-based blind injection?
What I'm saying is if you take the following code:
<?php $x = 'admin" AND SLEEP(10)#'; $y = 'superSecretPassword'; $query = sprintf('SELECT * FROM users WHERE username="%s" AND password="%s"', $x, $y); echo $query; ?>
which results in the following output:
SELECT * FROM users WHERE username="admin" AND SLEEP(10)#" AND password="superSecretPassword"
That is vulnerable to almost every form of SQLi.
I guess my questions are:
a) Why would you chose to perform a time-based SQL injection over any other method of injection as Time-Based takes so long and is arguably more detectable than other methods?
b) (Running SQLMap or similar tools in this case) How is it that other methods fail, but time-based SQL injection is present?