Sqlmap效能優化 引數注入

2021-10-02 18:57:50 字數 3994 閱讀 4159

我們可以通過設定長連線、空連線、多執行緒來提公升sqlmap的執行速度。

sqlmap中可以設定連線為持久連線。http報文中設定connection:keep-alive

-- keep-alive
需要注意的是該引數與**的設定–proxy是相衝突的不能一起使用

引數

--null-connection
sqlmap中設定空連線,表示不接受http當中的body。可以直接獲得http響應的大小而不用獲得http響應體,常用在盲注過程中

引數

--thread
sqlmap中設定同時傳送多少個http請求的多執行緒

-o 新增此引數相當於同時新增下列三個優化引數

--keep-alive

--null-connection

--threads=3

引數:--level
此引數用於指定檢測級別,有1~5共5級。預設為1,表示做最少的檢測,相應的,5級表示 做最多的檢測。level 2:測試cookie,進行自動破解

level3:測試http user-agent,referer等頭部資訊

引數:–-risk
此引數用於指定風險等級,有1~3共3級。預設風險等級為1,此等級在大多數情況下對測試目標無害。

風險等級2新增了基於時間的注入測試,等級3新增了or測試。

預設情況下sqlmap會測試所有get引數和post引數,當level大於等於2時會測試cookie引數, 當level大於等於3時會測試user-agent和referer。實際上還可以手動指定乙個以逗號分隔的、 要測試的引數列表,該列表中的引數不受level限制。這就是「-p」的作用。

python sqlmap.py -u "url位址" -p "引數1,引數2" --banner
如果不想測試某一引數則可以使用 --skip。

python sqlmap.py -u "url位址" --skip="引數1,引數2" --banner
當注入點位於uri本身內部時,會出現一些特殊情況。除非手動指向uri路徑,否則sqlmap不會對uri路徑執行任何自動測試。必須在命令列中新增星號(*)來指定這些注入點。

python sqlmap.py -u "http://targeturl/param1/value1*/param2/value2/"  --banner

python sqlmap.py -u ""
該命令列就表示對id這個引數進行測試

預設情況下sqlmap會自動識別探測目標web應用程式的後端資料庫管理系統(dbms),sqlmap支援的dbms種類

引數 --dbms 資料庫型別
預設情況下sqlmap會自動探測目標web應用程式的後端作業系統,sqlmap完全支援的os種類linux、 windows

引數 --os 系統型別
引數:--invalid-bignum
在sqlmap需要使原始引數值無效(例如id=13)時,它使用經典的否定(例如id=-13)。

有了這個引數,就可以強制使用大整數值來實現相同的目標(例如id=99999999)。

python sqlmap.py -u "" --invalid-bignum --banner
這樣做的目的在於,比如本來人家id=1是到其資料庫中搜尋其第一條sql語句,我們令其失效後讓他執行我們後面輸入的其他sql語句達到sql注入的目的。

引數:--invalid-logical
有了這個引數,就可以強制使用布林操作來實現相同的目標(例如id=13 and18=19)。

引數:--invalid-string
有了這個引數,就可以強制使用隨機字串來實現相同的目標(例如id=akewmc)。

在某些情況下,只有當使用者提供要附加到注入負載的特定字尾時,易受攻擊的引數才可被利用。當使用者已經知道查詢語法並希望通過直接提供注入有效負載字首和字尾來檢測和利用sql注入時,這些選項就派上用場了。

--prefix 設定sql注入payload字首

--suffix 設定sql注入payload字尾

$query = "select * from users where id=('.$_get['id'].') limit 0, 1";

$query = "select * from users where id=('1') and ('abc'='abc') limit 0, 1";

上述**的意思就是比如他原來的sql語句為

select * from users where id=('1')
然後在payload前新增了乙個』),在payload後新增了乙個and (『abc』='abc

將sql語句改寫成

select * from users where id=('1')and ('abc'='abc')
sqlmap本身不會混淆傳送的有效負載,除了單引號之間的字串被char()類似的表示形式所取代之外。sqlmap通過tamper指令碼來繞過waf等防禦措施,可以在tamper資料夾下找到所有sqlmap自帶的tamper指令碼。

python sqlmap.py -u "http://ip/sqlmap/mysql/get_int.php?id=1" --tamper "between.py,randomcase.py,space2comment.py" -v 3
設定dbms認證方式通過以下命令:

–dbms-cred = username:password

python sqlmap.py -u "" --dbms-cred = "root:root" --banner
這個使用的也比較少,因為如果我們已經知道的資料庫的賬號密碼,那也沒有必要通過這樣的方式來進行認證。

引數 --technique
此引數用於指定檢測注入時所用技術。預設情況下sqlmap會使用自己支援的全部技術進行檢測。 此引數後跟表示檢測技術的大寫字母,其值為b、e、u、s、t或q,含義如下:

可以用「–technique es」來指定使用兩種檢測技術。「–technique beustq」與預設情況等效。

引數:–time-sec
用此引數設定基於時間延遲注入中延時時長,預設為5秒

在進行聯合查詢注入時,sqlmap會自動檢測列數,範圍是1到10。當level值較高時列數檢測範圍的上限會擴大到50。

可以用此引數指定列數檢測範圍,如–union-cols 12-16就會讓sqlmap的列數檢測範圍變成 12到16。

引數:–union-char

--union-char 123

預設情況下sqlmap進行聯合查詢注入時使用空字元(null)。但當level值較高時sqlmap會生成隨機數用於聯合查詢注入。 因為有時使用空字元注入會失敗而使用隨機數會成功。

引數:–union-from
有些情況下在聯合查詢中必須指定乙個有效和可訪問的表名,否則聯合查詢會執行失敗

探測目標指紋資訊

引數 -f或者--fingerprint
該引數使用效果基本等同於–banner

sqlmap學習(九)注入引數

預設情況下sqlmap會自動探測目標web應用程式後台資料庫管理系統 dbms資料庫管理系統名稱 版本號 python sqlmap.py u banner dbms mysql python sqlmap.py u banner os linux invalid bignum invalid lo...

sqlmap學習(七)效能優化

o可以開啟所有效能優化引數 沒有設定持久http連線時,使用wireshark抓包檢視到connection close r n 新增引數 keep alive後,使用wireshark抓包檢視到connection keep alive r n sqlmap中設定空連線,表示不接收http bod...

sqlmap注入引數(常用)pikachu靶場

對於有sql注入的引數,可以採用sqlmap進行批量測試,常用命令如下 使用sqlmap跑post方式時的格式 python2 sqlmap.py u data dbms 預設情況下會探測web應用後端的資料庫是什麼 該步驟 dbms mysql 制定了資料庫型別為myslq資料庫 dbs 當使用者...