SQli trên Mysql + MS access + MssQl cơ bản

Discussion in 'Web Application Security & Hacking' started by Mickey, Dec 7, 2017.

  1. Mickey

    Mickey Hacking For Hacker Staff Member

    Sau khi xác định site sqli + check sqli +hệ quản trị SCDL là gì (phổ biến MsAccess,MSSQL,MySQL, Oracle), thì chúng ta bắt tay vào công việc khai thác chúng. (Mỗi hệ quản trị CSDL khác nhau thì có cách khai thác gần như là khác nhau).Các bạn phải lắm rõ vần đề tưrên để sau này dễ dàng cho việc khai thác lỗi. Cách khai thác lỗi của từng ứng dụng sử dụng CSDL trên sẽ đợc trình bày ở dưới: (tuy nhên theo kinh các newbie cố găng tập trung MýQJ vì nó là phổ biến)

    Đối với CSDL MyQSL:



    Trích dẫn:Lỗi trả về thường xuất hiện các dấu hiệu sau:
    Mã:
    Riêng bọn này các bạn cần chú ý việc đầu tiên ta khai tác là kiếm version (phiên bản) của nó hiện tại.
    Kĩ thuật khai thác bọn này được thực hiền lần lượt như sau:
    Đầu tiên ta tiến hành xác định số cột trong table hiện tại bằng cách sử dụng Order by n (VD: 6)

    Tiếp theo ta sử dụng UNION SELECT [ số cột tìm được , được phân cách bằng dấu phẩy]--
    Mã:
    nó sẽ hiện ra những con số

    nếu không hiện số:
    +viewsource
    +Xem file ảnh bị lỗi để thấy số
    +Thay số bằng null (vd id=-188 thì thay id=null UNION....)
    +Thay các column(field) bằng null (vd :UNION SELECT null,null,....)
    +Bypass filter (mod_security)( TH này mình sẽ đi sâu phần sau)
    +TH hiện ra thông báo thế này: The used SELECT statements have a different number of columns

    Union select như sau:
    Mã:
    id=1+and+1=0+UNION SELECT+1,2...[/COLOR]

    Hoặc dùng error base:
    Mã:
    Hoặc dùng blind:
    Mã:
    Tuỳ thời cơ mà biến hoá chúng

    Tỉ dụ nó hiện ra số 3.
    Công việc tiếp theo của ta là xác định version (Công việc quan trọng nhất)
    Mã:
    >>>>Phiên bản lớn hơn hoặc bằng 4 và nhỏ hơn 5: Khai thác như lỗi của CSDL MsAccess (Hack Đoán)
    >>>>Phiên bản lớn hơn 5 thì sử dụng cách dưới đây.
    Oke, ta đã xác định được phiên bản là lớn hơn 5. ta tiến hành truy vấn.
    Mã:
    hoặc
    Mã:
    hoặc
    Mã:
    Tuỳ thời cơ mà biến hoá chúng.

    nó sẽ trả về giá trị đầu tiên là: CHARACTER_SETS, để gộp tất cả các table lại cho dễ tìm kiếm thì các bạn dùng hàm Group_concat() Hoặc limit.
    Mã:
    Chúng ta không quan tâm lắm nhưng table dạng như này:
    CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY,USER_PRIVILEGES,VIEWS,admins
    vì đó chỉ là những table của hệ thống thôi, quan trọng là xác định được table chứa admin trong mớ hỗn độn phía trên. VD ta tìm được table chưa thông tin của admin là admins.
    Ta tiến hành chuyển chuỗi 'admin' sang dạng hex đẻ dễ khai thác vd chuyển sang là ?
    thì ta tiến hành tìm các column trong table admins đó bằng cách
    Mã:
    sau công viẹc này ta đã xác định được 2 cloumn quan trọng nhất , VD là username và password.
    Ta tiến hành lấy thông tin. Bằng cách
    Mã:
    0x2f: là dạng hex của kí tự /


    Đối với CSDL MSACCESS:

    Trích dẫn:là loại khó phá nhất trong các site dính SQLInj , lý do không phải do nó bảo mật, mà là do mặc định nó truy cập file mdb không bằng quyền admin, do đó table msysobjects chứa các table của nó ta không thể đụng được. Đụng vào CSDL này là phải blind hack (Hack đoán).
    lỗi trả về của loại này thường xuất hiện các dấu hiệu sau: Jet database, ODBC Microsoft Access Driver. Khai thác loai này như sau:
    Đầu tiên ta sử dụng lệnh UNION SELECT 1 FROM [Table_name]
    [Table_name]: Là tên table bạn đoán nó sẽ chứa thông tin về Username và pasword của Victim. VD: Admin, Admins, Account, Thanhvien, Quantri, User, Users,...
    VD: Bạn khai thác:
    Mã:
    Union select 1 from admin
    lỗi trả về là:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e37'

    [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot find the input table or query 'admin'. Make sure it exists and that its name is spelled correctly. (Dịch nôm na là không tồn tại table 'admin' trong CSDL)
    đừng nản trí, hãy đoán tiếp
    Mã:
    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Microsoft Access Driver] The number of columns in the two selected tables or queries of a union query do not match.

    /news.asp, line 16 (Dịch nôm na là: Số cột không cần bằng khi sử dụng truy vấn với Union)
    Đến đây chúng ta đã biết table chứa thông tin về victim là 'admíns' đến lúc này bạn chỉ việc ngồi đếm số cột trong table đó bằng cách Union select 1,2,3,..,n from admins các bạn cứ đếm sao cho nó không báo lỗi nữa mà trên trang đó hiện ra những con số. Đến lúc này bạn lại phải đoán column chứa username và password rồi thay thế chúng vào những con số hiện ra đó sao cho không hiện ra lỗi tức là bạn đã đoán đúng.
    VD: Bạn đếm được đến số 5 thì kô còn lỗi, Con số hiện ra đó là 2,3 và column chứa tên đăng nhập của admin là username, column chứa mật khẩu của admin là password thì bạn sẽ khai thác
    Mã:
    Đối với CSDL MSSQL:
    Trích dẫn:Lỗi trả về của bọn này thường xúât hiện các dấu hiệu sau:

    Microsoft OLE DB Provider for ODBC Drivers ,ODBC SQL Server Driver, Gọi tắt là (lỗi OLE DB)
    Cách khai thác bọn này sử dụng kĩ thuật "Magic convert". Kĩ thuật này được sử dụng như sau:
    Mã:
    Hoặc
    Mã:
    Trong bảng Information_schema.tables có chứa tất cả các table trong CSDL (Đây là gót chân Asin của bọn này )

    -Nếu tìm ra được cái table_name đầu tiên ví dụ là table1
    Check table tiếp theo của nó:

    Mã:
    cư như thế cho đến khi nào nó ra cái table_name chứa thông tin admin vd:tbladmin,admin,user,tbuser..

    Bước 2: Get column

    Tìm được cái table_name chưa thông tin admin rồi,ta tiến hành get column_name
    giả sử table1 chứa thông tin về admin

    Mã:
    vd ta tìm được column thứ 1 trong table1 là username
    Tiếp tục get các column thứ 2 trong table1:

    Mã:
    Nếu tìm được username/password trong table1 thì ta check pass của nó

    Bước 3: Check pass
    table_name là table1
    column_name trong table1 là : username/password

    Mã:
    Nguồn: CrazyKid - meocon1412 blog (st)
     

Share This Page