- vừa được xem lúc

SQL Injection

0 0 26

Người đăng: Vo Trong Van

Theo Viblo Asia

Giới thiệu

SQL Injection là một kiểu hack phổ biến hiện nay, lợi dụng lổ hổng của việc kiểm tra dữ liệu đầu vào của các trang web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để "tiêm vào" và thực thi các câu lệnh SQL bất hợp pháp. SQL Injection có thể cho phép hacker thao tác, thêm, sửa, xóa… trên cơ sở dữ liệu, không chỉ thế hacker còn có thể cài đặt backdoor trên server mà ứng dụng đang chạy => qua đó có thể kiểm soát cả hệ thống.

Hướng khai thác

Những đoạn script SQL có thể được "tiêm" vào câu query thông qua nhiều cách khác nhau như:

Thông qua “user input”

Điển hình là những form nhập data, form search hay link,... những dữ liệu này được web browser gửi đến server thông qua phương thức HTTP GET, POST
VD: Form search ở dưới, khi nhập vào “SQL Injection” thì ứng dụng web sẽ truy cập vào CSDL tìm và trả ra các record khớp với từ khóa.

VD: ứng dụng web sẽ tìm user với id = 7

Thông qua cookies

Cookies là những tệp tin lưu trữ thông tin trạng thái của người dùng khi truy cập các ứng dụng web. Những thông tin này do người lập trình quyết định, được tạo ra ở server và lưu trữ tại client. Khi người dùng truy cập lại ứng dụng web, cookies được browser gửi lên server giúp phục hồi lại những trạng thái của người dùng trong lần truy cập trước đó.

Do được lưu trữ ở client nên người dùng có thể chỉnh sửa tùy ý, vì vậy nếu ứng dụng web sử dụng những thông tin lưu trong cookies để xây dựng các truy vấn tới cơ sở dữ liệu thì hacker hoàn toàn có thể chèn vào cookies những Script SQL để thực hiện một cuộc tấn công SQL Injection.

HACKSPLAINING

Đây là 1 trang web khá là thú vị có khá là nhiều bài học về bảo mật ứng dụng, mỗi bài học ở đây gồm 3 phần: Exercise, Prevention và Quiz, sau đây mình sẽ giới thiệu sơ qua về phần exercise của bài SQL Injection.

Đầu tiên có 1 form đăng nhập gồm email, password và console để show logs server

Làm theo hướng dẫn nhập email và password sau đó submit


Sau khi submit thì có lỗi trả về, ở đây tiếp tục làm theo hướng dẫn, thêm một dấu nháy đơn đằng sau password'
Dấu nháy đơn: trong ngôn ngữ SQL dùng để “gói” chuỗi. Ta thường thêm nó vào sau tham số kiểu số trên chuỗi truy vấn để kiểm tra có lỗi hay không.

Ở trên ta có thể thấy server báo lỗi, có một ký tự lạ đằng sau password' và raise lỗi SyntaxError, khi gặp lỗi này nghĩa là đằng sau server ta có thể viết code SQL bằng cách cộng chuỗi và đây là dấu hiệu để có thể tấn công SQL Injection

Hacker có thể tấn công bằng cách thêm một chuỗi giả như dưới đây

Vì lúc này điều kiện pass = ' ' or 1=1 là luôn luôn đúng, và như vậy thì hệ thống sẽ nghĩ mình login thành công => cho phép login và xem được những thông tin cá nhân của user

Nguồn

Trên đây là bài viết cơ bản những gì mình hiểu về SQL Injection nên còn nhiều thiếu sót mong bạn đọc thông cảm, để hiểu thêm về SQL Injection có thể tham khảo thêm link bên dưới
https://whitehat.vn/threads/sql-injection-paper-v1-0.37/
https://www.w3schools.com/sql/sql_injection.asp
https://www.hacksplaining.com/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Stored Procedure trong SQL Server

Stored Procedure là 1 phần không thể thiếu của SQL Server. Chúng có thể hỗ trợ rất nhiều cho lập trình và cấu hình cơ sở dữ liệu.

0 0 164

- vừa được xem lúc

sử dụng index trong sql query

Index là một trong những yếu tố quan trọng nhất góp phần vào việc nâng cao hiệu suất của cơ sở dữ liệu. Index trong SQL tăng tốc độ của quá trình truy vấn dữ liệu bằng cách cung cấp phương pháp truy xuất nhanh chóng tới các dòng trong các bảng, tương tự như cách mà mục lục của một cuốn sách giúp bạn

0 0 250

- vừa được xem lúc

Hướng dẫn sửa lỗi không cài được SQL Server

Hôm qua do yêu cầu môn học, mình có cài lại Microsoft SQL Server. Trước đó mình có cài rồi, nhưng rồi lâu không dùng nên gỡ ra cho nhẹ máy. Bây giờ có dịp cần nên mình mới cài lại. Chi tiết lỗi mình gặp phải.

0 0 134

- vừa được xem lúc

Bạn nên tránh sử dụng Soft Delete khi có thể, và đây là lý do tại sao

Con người luôn luôn mắc sai lầm. Vì vậy, việc "lo xa" trước mọi tình huống xấu nhất chưa bao giờ là thừa.

0 0 195

- vừa được xem lúc

Sử dụng trigger trong SQL qua ví dụ cơ bản.

Trigger là gì . Cú pháp của Trigger. CREATE TRIGGER tên_trigger ON tên_bảng. FOR {DELETE, INSERT, UPDATE}.

0 0 161

- vừa được xem lúc

Khác biệt giữa khóa chính và khóa ngoại trong SQL

Các khoá chính và khóa ngoại là hai loại ràng buộc có thể được sử dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL Server và đây là những đối tượng cơ sở dữ liệu quan trọng. Trong bài này, tôi muố

0 0 149