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 categoryGifts

  • released1.

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, Giftshoặc 1bằng 1. Vì 1=1luô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.

Last updated