Trang

Thứ Năm, 18 tháng 7, 2013

Tấn công SQL Injection [Bảo mật]

1. Thăm dò lỗi dựa trên phản hồi


Url:localhost/baomatweb_sql/vidu6.php?id=1

- Khi thêm nháy đơn vào id thành id=1'   . Nếu như xuất hiện lỗi thì xảy ra 2 trường hợp.

Thứ 1: Tham số truy vấn không có dấu nháy đơn bao quanh, do vậy nó sẽ lấy 1' làm tham số truy vấn, lúc này giá trị id có thể là id=1' hoặc id=1\' do chế độ magic_quotes_gpc đang ON, hoặc nó có escape.

Thứ 2: Tham số truyền vào có dấu nháy đơn bao quanh. Nhưng nó không Escape. Lúc này id='1'' nên xảy ra lỗi. Nếu như có Escape thì id = '1\'' , truy vấn không có lỗi.

- Bây giờ ta kiểm tra xem lỗi xảy ra ở trường hợp nào.
Ta thêm dấu \ trước dấu nháy đơn kiểu như vầy id=1\'
Nếu tiếp tục hiện lỗi thì chứng tỏ bị lỗi do trường hợp 1. Ngược lại không xảy ra lỗi tiếp tục thì bị lỗi do trường hợp 2.

- Với lỗi TH1 thì escape không có tác dụng gì. Ta tiến hành tấn công như bình thường.

- Với lỗi TH2 ta sẽ tấn công bình thường nhưng có hơi khác một chút.
id=1' ... --' : trong dấu ... ta tiến hành các câu injection. Dấu nháy sau số 1 để đóng lại dấu nháy trước. Do vậy sẽ tồn tại một dấu nháy ở cuối cùng. Do đó ta thêm --' vừa để thêm dấu nháy cho đủ 1 cặp, vừa biến nó và các câu truy vấn phái sau thành chú thích.
SELECT * FROM tin WHERE idLT= '1' AND 1=2 UNION SELECT 1,2,3,4 --''

(Còn tiếp)

Không có nhận xét nào:

Đăng nhận xét