TESTING SQL INJECTION

1.What’s security test?

  • Là kiểm tra xem các chức năng,dữ liệu private có bị public.

  • Để thực hiện Security test cho sản phẩm,tester phải nắm được công nghệ làm ra sản phẩm đó + kinh nghiệm +nắm chắc hệ thống.

2.Introduction to SQL Injection

SQL Injection là một kĩ thuật điền vào những đoạn mã SQL bất hợp pháp cho phép khai thác một lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu của ứng dụng.

Ví dụ: Lỗi SQL Injection ở trang Login

  • Với dạng tấn công này,có thể dễ dàng vượt qua trang Login nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng.

  • Sau khi người dùng nhập thông tin vào,hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không? 1.png

    Nếu nhập ” ‘ OR 1=1″ vào ô text user và pass thì câu lệnh SQL sẽ có dạng:

SELECT * FROM T_USERS WHERE USR_NAME=OR 1=1 and USR_PASSWORD=OR 1=1
- Kiểm tra USR_NAME=” đúng hay sai? –> Sai
- Kiểm tra 1=1 đúng hay sai? –> Đúng
- Kiểm tra USR_PASSWORD=” đúng hay sai? –> Sai
- Kiểm tra 1=1 đúng hay sai? –> Đúng

(1) or (2) –>Đúng,   (3) or (4) –>Đúng

Câu truy vấn này là hợp lệ,người dùng đăng nhập bất hợp pháp sẽ được coi như người dùng hợp lệ.

3.The nature of SQL Injection

  • Chèn câu lệnh SQL do user tự viết vào các điểm kết nối CSDL trên hệ thống.

  • Run câu lệnh SQL đó thành công trên hệ thống.

=> phải có đủ 2 điều kiện trên mới là SQL Injection

4.Testing SQL Injection

Có nhiều cách để Dev che giấu 1 trang bị lỗi SQLi –>sẽ có nhiều cách để kiểm tra trang đó có bị lỗi SQLi hay không.

Để test được SQLi ta cần:

  • Xác định được các điểm kết nối trên CSDL của hệ thống.

  • Đơn giản nhất là thêm các kí tự ‘ và ” vào những điểm kết nối CSDL đó –> Nếu hệ thống hiển thị một trong các message sau thì trang đó bị lỗi SQLi. 2.png

Created by Dang Duc Tam


All Rights Reserved