Lab: Retrieving hidden data
SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
Mô tả
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
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
.


Giải pháp
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ặc1
bằng1
. 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ồmAND released = 1
.

Last updated