Capisco cos'è un'iniezione SQL basata sul tempo e capisco come funziona (almeno come viene rilevato / sfruttato).
Tuttavia, c'è qualche cosa in specifico che rende questo tipo di iniezione diverso dall'iniezione cieca basata su booleani?
Quello che sto dicendo è se si prende il seguente codice:
<?php
$x = 'admin" AND SLEEP(10)#';
$y = 'superSecretPassword';
$query = sprintf('SELECT * FROM users WHERE username="%s" AND password="%s"', $x, $y);
echo $query;
?>
che restituisce il seguente output:
SELECT * FROM users WHERE username="admin" AND SLEEP(10)#" AND password="superSecretPassword"
Questo è vulnerabile a quasi ogni forma di SQLi.
Credo che le mie domande siano:
a) Perché dovresti scegliere di eseguire un'iniezione SQL basata sul tempo su qualsiasi altro metodo di iniezione poiché Time-Based impiega così tanto tempo ed è probabilmente più rilevabile rispetto ad altri metodi?
b) (Esecuzione di SQLMap o strumenti simili in questo caso) Com'è che gli altri metodi falliscono, ma è presente un'iniezione SQL basata sul tempo?