Web3: SQL injection – Các hướng khai thác

Thảo luận trong 'Web Security' bắt đầu bởi Mask, 15/01/14, 11:01 AM.

  1. Mask

    Mask VIP Members

    Tham gia: 03/07/13, 08:07 AM
    Bài viết: 25
    Đã được thích: 23
    Điểm thành tích:
    18
    Web3: SQL injection – Các hướng khai thác


    Các chuyên đề nhỏ cùng chủ đề:

    1. Boolean based và Time based Blind SQL injection

    Boolean based: Cơ sở của kỹ thuật này là việc so sánh đúng sai để tìm ra từng ký tự của những thông tin như tên bảng, tên cột… Do đó, với dải giá trị chữ số, chữ cái (bao gồm cả hoa, thường), và một số ký tự đặc biệt, việc so khớp trở nên rất khó khăn và đòi hỏi nhiều thời gian. Do đó việc khai thác lỗi chủ yếu được tiến hành bằng tools.

    Trong kỹ thuật Blind SQLi, chúng ta cũng có nhiều phương pháp khác nhau. Điểm khác biệt giữa các phương pháp này là sự tối ưu thời gian. Chúng ta sẽ cùng tìm hiểu về blind sql injection cũng như các phương pháp của nó trong các chuyên đề sau.

    [​IMG]

    Time based: Giống như boolean based attacks chỉ khác nhau về cách suy diễn, nó dựa thời gian xử lý của cơ sở dữ liệu sau đó trả về kết quả để xác định câu truy vấn Sql thực hiện thành công.

    [​IMG]

    2. Union query based

    Đây là phương pháp phổ biến khi khai thác Sql injection. Cơ sở của nó là sử dụng từ khóa union để gộp các kết quả của các mệnh đề select, qua đó lấy được thông tin từ cơ sở dữ liệu. Các bạn có thể xem ví dụ về việc sử dụng phương pháp này trong khai thác SQL injection trong các chuyên đề trước: W1: SQL injection - Con đường khai thác phổ biến : qua “user input”W2: SQL injection - Con đường khai thác khác

    3. Batched query

    Đây là phương pháp áp dụng khả năng thực thi cùng lúc nhiều câu lệnh Sql của một số hệ quản trị cơ sở dữ liệu và khả năng hỗ trợ của ngôn ngữ lập trình. Phương pháp này rất mạnh mẽ và gây nguy hiểm ngay với hệ thống. Bằng cách thêm vào một dòng lệnh Update, Insert hay Delete, dữ liệu trong cơ sở dữ liệu của ứng dụng web không còn toàn vẹn nữa.
    Chúng ta có thể chèn vào câu lệnh Sql như sau để xóa 1 bảng trong cơ sở dữ liệu:

    [​IMG]

    [​IMG]


    4. Order by clause

    Không giống như các phương pháp trên, nội dung inject nằm trong mệnh đề điều kiện where. Trong phương pháp này, chúng ta sẽ cố gắng tiêm mã script vào mệnh đề order. Chúng ta hãy xem đến một kịch bản sau:

    Người lập trình muốn liệt kế sản phẩm của công ty bao gồm các thông tin : Mã sản phẩm, Tên sản phầm, Ngày tháng… và có chức năng cho pháp người dùng tủy chỉnh xem họ muốn sắp xếp theo thứ tự ngày tháng, theo tên hay mã của sản phẩm.

    Câu truy vấn được xây dựng như sau :

    [​IMG]

    Trong trường hợp này chúng ta không thể thêm trực tiếp một mệnh đề sub select thông qua từ khóa union như mọi khi được. Một cách khai thác đó là sử dụng BATCHED QUERY hoặc có thể tham khảo cách sau:

    [​IMG]

    Trong phương pháp trên, chúng ta đã inject được một sub select nhưng rõ ràng cách thực hiện này giờ đây phải kết hợp cả với kỹ thuật BOOLEAN BASED BLIND SQLI.

    Các bạn quan tâm có thể theo dõi chuyên đề tiếp theo - "Web4: SQL injection - Kỹ thuật khai thác: Các bước khai thác"
     
    Last edited by a moderator: 15/09/14, 04:09 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. whooshgoo

    whooshgoo W-------

    Tham gia: 14/09/13, 08:09 AM
    Bài viết: 6
    Đã được thích: 0
    Điểm thành tích:
    6
    Re: Web3: SQL injection – Các hướng khai thác

    xxx' union select 10 -- -
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan