You are on page 1of 10

KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

CÂU LẠC BỘ TIN HỌC

CHUYÊN ĐỀ
SQL INJECTION

Báo cáo viên: Nguyễn Thành Nhân

13/10/2010 1
Nội dung trình bày

• Lược sử về các cuộc tấn công SQL


Injection.
• SQL Injection là gì?
• Cách thức và các kiểu tấn công.
• Cách phòng chống và xây dựng website
an toàn.
• Thảo luận.

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ụ:

select * from account where username= username and


password= password

 select * from account where username= username or 1=1 -


- and password= password

13/10/2010 5
2. Một số cách tấn công

Hàm kiểm tra đăng nhập thông thường:

public boolean test(String username,String password){


rs=con.getStatement().executeQuery("select * from account where
"
+ "username='" + username + "' and password='" + password
+ "'"); if(rs.next()){
return true;
}
return false;
}

 Gõ vào ô username dòng lệnh:

‘ or 1=1 --
13/10/2010 6
2. Một số cách tấn công

Câu truy vấn trở thành:

Select * from account where username=‘’ or 1=1


 Kết quả trả về là một loạt các tài khoản người dùng vì Câu
lệnh if luôn đúng Resultset not null loggeg!!!

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

You might also like