我們發現了乙個sql注入點,在通過sqlmap dump資料的時候出現亂碼了,如果我們希望通過sqlmap選項,以合理的方式處理這些亂碼的資料,就需要一些技巧性的使用方式了。
可以看到下圖中,在我vps上的sqlmap的--sql-shell
選項下,通過sql語句來獲取某個欄位的內容時,sqlmap輸出的資料是亂碼的
關於dump資料輸出亂碼,我們至少可以用二種以上的技巧來解決
--encoding
:資料返回時的所使用的的編碼
不同版本的sqlmap
比如在上面的場景中,我們mb_name
字段出現亂碼,則我們可以通過--binary-fields=mb_name
的方式來解決這乙個問題,完整的命令如下:
sqlmap -r ***.txt -d dbname -t tablename -c mb_id,mb_email,mb_password,mb_name --dump --binary-fields=
"mb_name" --sql-shell
我們可以再次在sql-shell
的模式下獲取mb_name內容
接下來,我們應該如何對這裡的十六進製制資料做處理?比如筆者上面mb_name對應的編碼為euc-kr
--encoding
一般用於返回頁面沒有設定響應頭content-type
和meta
標籤的編碼時使用和配置,比如在上面的場景下,--encoding=euc-kr
sqlmap/lib/request/basic.py
為了更好的了解亂碼問題的出現,我在本地電腦也進行了資料獲取的操作,發現本地電腦獲取mb_name資料時,並沒有出現亂碼的情況。
這裡面有一條除錯資訊引起了我的注意turning off national character casting
,我們暫且先記錄下來
為了驗證是否因為cast後的資料型別不一致,我們可以通過--no-cast
選項來模擬亂碼的場景,發現關閉cast後,出現了我們熟悉的亂碼,從而可以確定cast(mb_name as nchar)
時才不會亂碼。
git commit對比如下
從上面的資訊我們知道,sqlmap新版本修復了乙個union注入時nchar問題,在union注入的情況下,新版sqlmap會自動去掉cast(mb_name as nchar)
的使用。
知道問題是不同版本的sqlmap導致的,那麼咱們切換版本即可
#新版git
git switch -c c6557e2
#舊版git
sqlmap使用技巧(2)
引數 user agent和 random agent 預設情況下sqlmap傳送的http請求中的user agent值為 sqlmap 1.0 dev x 引數 user agen顧名思義就是修改資料報中的user agent那一項,而 random agent則是針對 random agent...
sqlmap使用技巧(1)
1 直連資料庫 d 2 直接對單一url進行探測 u 3 批量掃瞄注入 g 4 強制指定請求方法 method 5 引數 data 此引數是把資料以post方式提交,sqlmap會像檢測get引數一樣檢測post的引數。也就是將資料的提交方式隱式的改為post。6 指定分隔符 param del 上...
Sqlmap學習系列之二
1 v 按照官方文件說明,v 意為 verbose verbosity level 0 6 default 1 即 詳細等級包括0 6級,預設為1級 在測試語句最後以 v 等級 出現。經指正,詳細等級是指測試結果的輸出的詳細程度。2 level 按照官方文件說明,level level level ...