Professional Documents
Culture Documents
Bao Cao SQLInjection
Bao Cao SQLInjection
CHUYÊN ĐỀ
SQL INJECTION
13/10/2010 1
Nội dung trình bày
13/10/2010 2
Lược sử SQL Injection
• Cuộc tấn công website BGD&ĐT
www.moet.gov.vn ngày 27.11.2006
• Cuộc tấn công vào website Microsoft
ngày 27.6.2007
• Một trong những vụ
tấn công SQL Injection
nổi tiếng nhất là vụ tấn
công vào
CardSystems
13/10/2010
Solutions 3
1. SQLInjection là gì?
Là một kĩ thuật tấn công web lợi dụng lỗ hổng trong việc kiểm
tra dữ liệu nhập của ứng dụng web và các thông báo lỗi của hệ
quản trị cơ sở dữ liệu.
Biện pháp: “Bơm” câu lệnh Sql vào các công cụ nhập liệu cho
phép submit cơ sở dữ liệu (thanh address, form login…).
Mục đích: Truy cập trái phép vào CSDL, đánh cắp, phá hủy
CSDL của website…
Tin tặc không phải mất công giả mạo để lừa người sử dụng
cung cấp thông tin cá nhân tài chính. Tỉ lệ thành công của các vụ
tấn công SQL Injection thường rất cao.
13/10/2010 4
2. Một số cách tấn công
a. Vượt qua kiểm tra đăng nhập:
Khe hở: Việc kiểm tra tài khoản người dùng không đủ tin cậy. Hacker đã lợi dụng
lỗ hổng này. Ví dụ:
13/10/2010 5
2. Một số cách tấn công
‘ or 1=1 --
13/10/2010 6
2. Một số cách tấn công
13/10/2010 7
2. Một số cách tấn công
b. Lấy thông tin về cấu trúc CSDL với thông báo lỗi từ hệ quản trị.
• Cơ chế: Kích thích cho hệ quản trị phát sinh thông báo lỗi mang theo cả
thông tin về CSDL.
• Có thể sử dụng một số lỗi cú pháp thông thường như các ví dụ sau:
Tìm tên bảng, tên cột: Điển hình với mệnh đề group by, tên các
trường sau select phải có sau mệnh đề group by, có thể có
having. Nhưng không thể chấp nhận câu truy vấn có having đứng
lẻ loi.
Xác định kiểu của từng trường: Điển hình với thông báo từ lỗi
tính tổng (sum) hoặc trung bình (avg) trường có kiểu không phải
dạng số.
13/10/2010 8
13/10/2010 9
2. Một số cách tấn công
c. Chèn một vài mẩu tin theo ý đồ:
Khi đã biết cấu trúc của bảng cần chèn, ta có thể sử dụng lệnh insert của
hệ quản trị để thêm một mẩu tin vào csdl.
d. Lấy cắp thông tin:
13/10/2010 10