Lab: Retrieving hidden data
SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Last updated
SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Last updated
Trang web có chứa lỗ hổng SQL injection trong bộ lọc sản phẩm. Khi người dùng chọn một danh mục, ứng dụng sẽ thực hiện truy vấn SQL như sau:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Yêu cầu: Khiến ứng dụng hiển thị một hoặc nhiều sản phẩm chưa phát hành
Phân tích truy vấn khi chọn danh mục Gifts:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Truy vấn này yêu cầu trả về:
tất cả các trường (*)
từ bảng products
với category
làGifts
và released
là 1
.
Thêm vào sau URL '+OR+1=1--
Điều này dẫn đến truy vấn SQL:
SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1
Trong đó:
Truy vấn đã sửa đổi trả về tất cả các mục có giá trị là category
, Gifts
hoặc 1
bằng 1
. Vì 1=1
luôn đúng, truy vấn trả về tất cả các mục.
--
là một chỉ báo chú thích trong SQL. Điều này có nghĩa là phần còn lại của truy vấn được hiểu là một chú thích, về cơ bản là xóa nó, truy vấn không còn bao gồm AND released = 1
.