關於sqlmap的兩個小坑

2021-09-01 12:17:19 字數 2132 閱讀 5826

i春秋作家:__lsa__

0x00 概述

近日在利用sqlmap注入測試時遇到乙個奇怪的現象,高版本sqlmap無法檢測出注入,但是低版本的可以測出注入,並且能跑出資料不是誤報,經過對比測試和檢視sqlmap原始碼,發現兩個小坑。

0x01 情景重現

注入點形式:json

……」whereparams」:}

可注入引數:value

sqlmap命令:

python sqlmap.py -r sqlpk.txt –flush-session -vv

sqlmap v1.2.11無法注入

sqlmap v1.2成功注入

同理v1.2.10無法注入,v1.1.12可以注入

經過分析,兩坑如下:

(1)v1.2.11(/v1.2.10/v1.2.9/master)的boundaries.xml沒有了針對模糊查詢(%)的測試,而v1.2(/v1.1.12/1.1.4/1.2.2)則有。

(2)v1.2.11(/v1.2.10/1.2.9/master)必須手動設定json的某個引數為*才能對這個引數進行注入(即使選了y-inject inside),否則payload直接跟在json後導致無法注入,而v1.2(/v1.1.12)則可以預設回車(y)即可對json的某個引數注入。

0x02 詳細測試

坑點(1):

先了解sqlmap的payload組成:

看看v1.2的測試payload:

使用了payload:%『 and 5731=5731 and 『%』=』

這是挺常見的搜尋框注入

看看v1.2的boundaries.xml:

而v1.2.11的boundaries.xml沒有對模糊查詢的注入測試!

於是新增模糊查詢的注入測試到v1.2.11的該檔案中,並手動新增*到注入引數(如value),即可成功注入!

附上新增後的版本:

pr得到答覆是因為誤報太多所以移除了相關payload,但是將會有限的恢復。

坑點(2):

對比v1.2和v1.2.11的payload:

可以看出v1.2.11直接將payload接在json末尾了。

在注入引數value手動新增*

%22whereparams%22%3a%5b%7b%22name%22%3a%22keyword%22%2c%22value%22%3a%22*%22%7d%5d%7d

即可成功注入!

0x03 結語

1. 個人建議新增模糊查詢的測試payload,誤報還是好過漏報,況且是很常見的模糊查詢注入。

2. 遇到json引數盡量加手動*(針對某些版本的sqlmap)。

3. 利用sqlmap測試的時候建議加上-vv。

4. 不能過於依賴工具,盡量工具+手工測試比較保險。

Xcode7 的兩個小坑

xcode7 還在 beta。時不時崩一下什麼的倒也是預料之中的事。沒料到的是之前用著好好的,今天公升完 el capitan 之後,模擬器竟然不見了,裝置倒是在 schema 欄右邊裡能看到。只是註明不能用。看了看系統日誌是 simulator 服務不停的崩。查了查。有人已經分析過了 簡單點說。去...

兩個正則坑

先看第乙個,var re d d var r1 re.test 010 12345 console.log r1 結果控制台給出false。問題在哪?發現把逗號後的空格刪了就好了。習慣性在逗號後敲空格了,尤其是es6對物件進行擴充套件以後,以後不能這樣子了。接下來看個比較難的,零寬正向斷言,不熟悉的...

WKWebView的兩個坑點

蘋果在 wkwebview 中的 js runtime 裡事先注入了乙個 window.webkit.messagehandlers.giveuid.postmessage 方法,我們可以使用這個方法直接向 native 層傳值,異常方便。首先,我們要把乙個名為 giveuid 的 scriptme...