• If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Loạt bài tấn công,phòng thủ Web- Phần hay nhất

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Loạt bài tấn công,phòng thủ Web- Phần hay nhất

    SVTH: Hoàng Minh Tuấn

    Chương 3: Demo


    3.1 Demo Form Login

    3.1.1 Những công cụ sử dụng

    Netbeans 6.9.1

    Hình 3.1.Công cụ NetBeans 6.9.1 dùng để lập trình Form đăng nhập




    Microsoft Access 2003


    Hình 3.2. Microsoft Access 2003 dùng để tạo cơ sở dữ liệu



    Lý do chọn 2 công cụ trên:
    Tuy Microsoft Access 2003 là cơ sở dữ liệu cũ, và thiếu tính chuyên nghiệp cao, nhưng demo này chỉ mang tính nghiên cứu cơ bản về lỗ hổng SQL Injection, để có cái nhìn trực quan hơn về phương pháp tấn công này, nên ở đây sử dụng những công cụ mang tính chất vừa phải để thực hiện. Những công cụ mới và mang tính chuyên nghiệp hơn như Microsoft SQL Server 2008, hay cơ sở dữ liệu của MySQL tích hợp vào Xampp,… đều đã vá lỗi cơ bản này nên không thực hiện được. Sau đây là phần dựng demo.
    3.1.2 Xây dựng kịch bản tấn công

    Dùng Netbeans tạo Form đăng nhập như sau:

    Hình 3.3. Form đăng nhập dùng để Demo



    Cơ chế hoạt động của Form như sau:
    • Username: nhập ID vào
    • Password dùng để nhập password vào
    • Khi nhập đúng Username và Password và bấm Login thì sẽ hiện lên thông báo:

    • Dang nhap thanh cong!
    • Password da dang nhap vao la:

    • Dòng “Dang nhap thanh cong!” cho biết là Username và Password đã hợp lệ.
    • Dòng “Password da dang nhap vao la:” để tiện kiểm tra lại password đã được nhập vào trong Demo này.

    • Khi nhập sai Username và Password và bấm Login thì sẽ hiện lên thông báo:

    • Sai user hoac password!
    • Password da dang nhap vao la:

    • Dòng “Sai user hoac password!” cho biết đã nhập sai một trong 2 giá trị Username hoặc Password
    • Dòng “Password da dang nhap vao la:” để kiểm tra lại password đã được nhập vào

    • Khi truy vấn, chương trình sẽ nhận username từ khung Username và password từ khung Password; sau đó sẽ dò vào bảng User so sánh 2 kết quả này với cơ sở dữ liệu đã được lưu vào.


    Cơ sở dữ liệu dùng trong Demo này sẽ là:

    Hình 3.4.a Cơ sở dữ liệu dùng cho Demo 1



    Hình 3.4.b Cơ sở dữ liệu dùng cho Demo 1



    Password sẽ không được mã hóa thành kí tự “*” để tiện cho việc theo dõi kết quả Demo
    3.1.3 Source code Form đăng nhập:

    /**
    * @author Hoang Minh Tuan
    */
    import java.sql.*;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class SQL_Injection extends javax.swing.JFrame {
    String user="";
    String pass="";
    static Connection con;

    static Statement stm=null;
    public SQL_Injection() {
    initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    // đây là code do chương trình sinh ra






    3.1.4 Thực hiện Demo

    Đầu tiên, thử đăng nhập đúng với username là admin và password là admin


    Hình 3.5 . Đăng nhập thành công vào Form



    Sau đó, đăng nhập sai. Đầu tiên là sai username, sau đó sẽ là sai password

    Hình 3.6. Nhập sai username


    Hình. 3.7 .Nhập sai password


    Thử tấn công bằng câu lệnh trong phần nghiên cứu lý thuyết trên, nhập vào như sau:

    Hình 3.8. Nhập vào một câu truy vấn bất thường 1



    Lỗi sẽ hiện ra:

    Hình 3.9. Thông báo lỗi khi nhập câu truy vấn bất thường 1.



    Vì sao lại như vậy? Bởi vì tuy SQL là một chuẩn, nhưng mỗi cơ sở dữ liệu tuy giống nhau về cú pháp nhưng từng loại lại có một chút đặc trưng riêng khác nhau hoặc ứng dụng cơ sở dữ liệu đã được nhà sản xuất sửa lại theo thời gian.
    Tiếp tục, thử nhập vào:

    Hình 3.10 . Câu truy vấn bất thường 2



    Chương trình sẽ lại tiếp tục báo lỗi:




    Tiếp tục, thử bỏ kí tự “;” đi

    Hình 3.12. Câu truy vấn bất thường 3



    Sẽ có thông báo:


    Hình 3.13. Thông báo lỗi khi nhập câu truy vấn bất thường 3




    Từ câu truy vấn bất thường 1, 2 và 3, có thể thấy kí tự “;” và “--“( 2 gạch nối) không thể sử dụng trong truy vấn này. Nhưng cũng từ 3 câu truy vấn trên, có thể suy luận ra được câu truy vấn nên dùng để tiến hành tấn công SQL Injection. Cụ thể như sau:

    Hình 3.14. Câu truy vấn bất thường 4 thành công khi chèn câu lệnh SQL vào và vượt qua kiểm tra đăng nhập



    Có thể thấy được cú pháp câu lệnh SQL chèn vào sẽ như sau:
    Username: [chuỗi bất kì] ‘ OR 1 = 1 OR ‘
    Password: [chuỗi bất kì]
    Phân tích: ở câu truy vấn 1, có thể thấy được kí tự “--“ không thể dùng được vì câu truy vấn chưa hoàn hảo. Câu truy vấn 2 cho thấy kí tự “;” cũng không dùng được. Tương tự với câu truy vấn 3, nếu để ý sẽ thấy kí tự “ ‘ “ ( dấu nháy) báo hiệu câu querry không hoàn chỉnh. Kết hợp 3 câu truy vấn tấn công không thành công ở trên, có thể tìm ra câu querry cần chèn vào.

    Đón xem 3.2 Tấn công demo trên Web
    Last edited by lamvantu; 15-10-2011, 11:38 AM.
    Lâm Văn Tú
    Email :
    cntt08520610@gmail.com
    Viet Professionals Co. Ltd. (VnPro)
    149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
    Tel: (08) 35124257 (5 lines)
    Fax (08) 35124314
    Tập tành bước đi....



  • #2
    hehe càng đọc càng ghiền :)) post lẹ lẹ nha bác Tú...

    Comment

    Working...
    X