sqlmap技巧系列 dump資料出現亂碼

2021-10-21 12:14:04 字數 2370 閱讀 6678

我們發現了乙個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-typemeta標籤的編碼時使用和配置,比如在上面的場景下,--encoding=euc-krsqlmap/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 ...