Lý thuyếtSQL Injection chèn mã độc SQL là một kỹ thuật cho phép kẻ tấn công chèn mã SQL vào dữ liệu gửi đến máy chủ và được thực hiện trên máy chủ CSDL.. Nguyên nhân: Dữ liệu đầu vào từ
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÁO CÁO THỰC HÀNH
AN TOÀN VÀ BẢO MẬT HỆ THỐNG THÔNG TIN
Sinh viên:
Họ tên: Phạm Minh Hiếu
Mã Sinh Viên: B19DCCN255
Số điện thoại: 0962180458
Email: minh.hieu.110701@gmail.com
Giảng viên phụ trách: TS Hoàng Xuân Dậu
HÀ NỘI, 2022
Trang 2A Lý thuyết
SQL Injection (chèn mã độc SQL) là một kỹ thuật cho phép kẻ tấn công chèn mã SQL vào dữ liệu gửi đến máy chủ và được thực hiện trên máy chủ CSDL
Nguyên nhân: Dữ liệu đầu vào từ người dùng hoặc từ các nguồn khác không được kiểm tra hoặc kiểm tra không kỹ lưỡng
Tùy mức độ tinh vi, SQL Injection có thể cho phép kẻ tấn công:
o Vượt qua các khâu xác thực người dung
o Chèn, xóa hoặc sửa đổi dữ liệu
o Đánh cắp các thông tin trong CSDL
o Chiếm quyền điều khiển hệ thống
Một số biện pháp khắc phục có thể kể tới:
o Kiểm tra dữ liệu kích thước
o Định dạng dữ liệu
o Tạo các bộ lọc
o Sử dụng stored procs
1 Vượt qua khâu xác thực người dung.
Đăng nhập tự do: nhập aaaa' or 1=1 → username và chuỗi bất kỳ
→ password Kết quả đăng nhập thành công với tài khoản người dùng đầu tiên trong danh sách
Trang 3Đăng nhập vào tài khoản một người dùng chỉ định: nhập david'
→ username và chuỗi bất kỳ → password Kết quả đăng nhập thành công với tài khoản người dùng david nếu tồn tại tài khoản với user này
Thay tên David thành tên người dùng khác, nếu tồn tại sẽ đăng nhập thành công với người dung đó
Trang 4Tìm thấy người dùng có username là hieudz Phân tích câu lệnh SQL được thực hiện (hiển thị trên trang) và giải thích kết quả có được
Trong code sử dụng câu truy vấn trực tiếp là 1 biến, ta đưa aaaa’ là
1 tên username tùy ý, 1 = 1 luôn trả về giá trị True, or là toán tử hoặc trả về giá trị đúng khi một trong hai kết quả đúng đoạn code phía trước mặc định là đúng, để biểu thị các dòng code phía sau trở thành các dòng comment vô nghĩa
2 Trích xuất dữ liệu từ Cơ sở dữ liệu.
Tìm số trường trong câu truy vấn của trang:
Trang 5Sử dụng order by 1
Sử dụng order by 2
Sử dụng order by 3
Trang 6Sử dụng order by 4 và thấy lỗi
Suy ra: Chỉ có tổng số 3 trường, đến trường thứ 4 thì gặp lỗi vì không tìn tại trường thứ 4
Tương tự, sử dụng union select để thử với 3 trường và cũng ra kết quả Vậy có tổng cộng 3 trường tồn tại ở bảng tbl_products
Hiển thị thông tin hệ quản trị CSDL và hệ điều hành:
Trang 7Trích xuất danh sách các bảng của CSDL:
Trích xuất danh sách các trường của một bảng:
Trang 8Các trường của bảng 'tbl_users'
Các trường của bảng 'tbl_test' Trích xuất dữ liệu bảng:
Trang 9Trích xuất dữ liệu bảng tbl_users
Trích xuất dữ liệu bảng tbl_test
Trang 10Trích xuất các trường của bảng student
Trích xuất bản ghi trùng mã sinh viên
3 Thêm, sửa, xóa dữ liệu.
Câu lệnh: samsung'; update tbl_users set password='test' where username='david';
Trang 11Câu lệnh: samsung'; insert into tbl_users (full_name, username, password) values ('Tom Cruise','tom','abc123');
Câu lệnh: samsung'; delete from tbl_users where username =
Trang 12'tom'; Thử với các câu lệnh khác:
Thêm tài khoản Pham Minh Hieu vào tbl_user
4 Khảo sát lỗi chèn mã SQL trên trang web.
Trang 13Trang web có đường link http://www.nesiyaholidays.com/login.php bị lỗi khi chèn đoạn mã do.thi.minh.hoa@framgia.com' OR 1 = 1 LIMIT
1 ' ] với mật khẩu bất kì vẫn sẽ đăng nhập được thành công