2.2. MỘT SỐ KỸ THUẬT TẤN CÔNG SQL INJECTION
2.2.2.4. Kỹ thuật tiêm bậc hai
Trong các kỹ thuật tiêm bậc hai, kẻ tấn công thêm dữ liệu đầu vào nguy hại tới hệ thông hoặc cơ sở dữ liệu, để khi đầu vào đó được sử dụng ở lần sau thì sẽ gián tiếp kích hoạt SQLIA. Mục tiêu của kiểu tấn cơng này khác so với kiểu tấn công tiêm thông thường (tiêm bậc nhất). Kỹ thuật tiêm bậc hai không gây ra tấn cơng đó khi dữ liệu đầu vào nguy hại đó tới được cơ sở dữ liệu lần đầu tiên. Thay vì đó kẻ tấn cơng biết được tri thức về vị trí của dữ liệu đầu vào sẽ được sử dụng tiếp theo và tấn công được thực hiện đồng thời trong quá trình người dùng làm việc. Dưới đây trình bày một ví dụ tấn cơng tiêm bậc hai. Trong ví dụ này, người dùng đăng ký trên website sử dụng một tên người dùng đã bị thay đổi, ví dụ “admin’ --”. Tại thời điểm người dùng thay đổi mật khẩu và toán tử liên quan đến việc kiểm tra xem người dùng có biết mật khẩu hiện tại và thay đổi mật khẩu nếu như việc kiểm tra này thành công. Để thực hiện được công việc này, ứng dụng Web có thể xây dựng câu truy vấn như sau:
queryString="UPDATE users SET password=’" + newPassword + "’ WHERE userName=’" + userName + "’ AND password=’" + oldPassword + "’"
newPassword và oldPassword là mật khẩu mới và mật khẩu cũ, và userName là tên của người dùng hiện tại. Giả sử newPassword và oldPassword là “newpwd” và “oldpwd”, thì truy vấn được gửi tới cơ sở
dữ liệu là:
UPDATE users SET password=’newpwd’
Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server
Do “--” là tốn tử chú thích SQL, mọi thứ sau nó sẽ bị cơ sở dữ liệu bỏ qua. Bởi vậy, kết quả của câu truy vấn là cơ sở dữ liệu thay đổi mật khẩu của người quản trị thành giá trị mà kẻ tấn công chỉ định.
Kỹ thuật tiêm bậc hai có thể là khó phát hiện và ngăn chặn bởi vì điểm tiêm là khác so với điểm mà tấn công thực sự xuất hiện. Người phát triển hồn tồn có thể tránh, kiểm tra kiểu, và lọc dữ liệu đầu vào và khẳng định đầu vào này là an toàn. Tuy nhiên khi dữ liệu này được sử dụng trong ngữ cảnh khác, hoặc để xây dựng kiểu truy vấn khác thì dữ liệu đã được làm sạch trước đó cũng có thể gây ra tấn cơng injection.