Monday, May 19, 2014

Cơ bản về SQL và Exploit SQL Injection

SQL (Structured Query Language) hay tiếng việt gọi là “Ngôn Ngữ Truy Vấn Cấu Trúc”: là loại ngôn ngữ phổ biến để tạo, sửa, lấy dữ liệu từ hệ thống quản trị cơ sở dữ liệu(có thể là SQL Server hay MySQL hay Oracle, DB2, Sysbase) theo tiêu chuẩn ANSI/ISO.

Các từ khóa SQL:

Từ khóa SQL được chia thành nhiều nhóm.

Truy vấn lấy dữ liệu (Query SQL Get Data):

SELECT: là lệnh sử dụng phổ biến, rộng rãi, là ngôn ngữ sửa đổi dữ liệu(tạm dịch) tiếng anh Data Manipulation Language – DML.

xem thêm về SELECT

Những từ khóa liên quan tới SQL

FROM dùng để chỉ định dữ liệu sẽ được lấy ra từ những bảng nào, và các bảng đó quan hệ với nhau như thế nào.
WHERE dùng để xác định những bản ghi nào sẽ được lấy ra, hoặc áp dụng với GROUP BY.
GROUP BY dùng để kết hợp các bản ghi có những giá trị liên quan với nhau thành các phần tử của một tập hợp nhỏ hơn các bản ghi.
HAVING dùng để xác định những bản ghi nào, là kết quả từ từ khóa GROUP BY, sẽ được lấy ra.
ORDER BY dùng để xác định dữ liệu lấy ra sẽ được sắp xếp theo những cột nào.

Truy vấn sửa đổi dữ liệu (Data Manipulation Language – DML):

là môt phần nhỏ của ngôn ngữ, có những thành phần tiêu chuẩn dùng để thêm, cập nhật và xóa dữ liệu delete data.

Những thẻ liên quan:


INSERT(Xem thêm) dùng để thêm dữ liệu vào một bảng đã tồn tại.

UPDATE(Xem thêm) dùng để thay đổi giá trị của một tập hợp các bản ghi trong một bảng.

MERGE dùng để kết hợp dữ liệu của nhiều bảng. Nó được dùng như việc kết hợp giữa hai phần tử INSERT và UPDATE.

DELETE(Xem thêm) xóa những bản ghi tồn tại trong một bảng.

TRUNCATE Xóa toàn bộ dữ liệu trong một bảng (không phải là tiêu chuẩn, nhưng là một lệnh SQL phổ biến).

Tham khảo thêm tại Wikimedia


SQL Injection là một kĩ thuật cho phép kẻ tấn công lợi dụng việc kiểm tra dữ liệu đầu vào trong các ứng dụng website sử dụng SQL tiêm(inject) và thi hành các câu lệnh bất hợp pháp để khai thác thông tin, dữ liệu trong hệ quản trị cơ sở dữ liệu.

Tham khảo thêm về SQL Injection tại Wikimedia

Các truy vấn trong Sql injection

UNION: là lệnh để kết hợp 2 câu truy vấn lại với nhau

FROM: là lệnh để chọn bảng để thi hành lấy dữ liệu

CONCAT: lệnh dùng để nỗi các chuỗi bên trong nó lại với nhau

Một số hình thức khai thác SQL Injection

Xem thêm tại các blog chuyên đề sql injection:

Xpath injection – Quý Thiếu Gia Blog

Error based, Double Query injection – Quý Thiếu Gia Blog

Một số hình thức bypass Sql injection – Quý Thiếu Gia Blog

Một số phương pháp để phòng lỗi SQL Injection

SQL Injection mình giới thiệu ở phía trên là lỗi không kiểm tra các dữ liệu đầu vào, để vá lỗi này, ta có một số phương pháp đơn giản sau để giảm thiểu:

-Dùng Htaccess để require lại link.

-Kiểm tra dữ liệu đầu vào, loại bỏ các kí tự đặc biệt như ‘,”,*,… hoặc nếu dữ liệu đầu vào là số nguyên (integer) thì ta có thể cố định dữ liệu gửi vào để loại bỏ toàn bộ các kí tự bất hợp pháp, loại dữ liệu khác với integer.

No comments:

Post a Comment