3.7 SqlMap用法—檢測
這些選項可用于自定義檢測階段。
3.7.1.檢測級別
選項: --level
此選項需要一個參數,該參數指定要執行的測試級別。有五個級別。默認值是1,其中執行有限數量的測試(請求)。反之亦然,級別5將詳細測試大量有效負載和邊界(如在SQL有效負載前綴和后綴對中)。sqlmap使用的有效負載在文本文件中指定xml/payloads.xml。按照文件頂部的說明進行操作,如果sqlmap錯過了注入操作,則您也應該可以添加自己的有效負載進行測試!
此選項不僅會影響嘗試使用哪些有效負載sqlmap,還會影響檢查中采用的注入點:始終測試GET和POST參數,從2級測試HTTP cookie頭值,并從2級測試HTTP User-Agent / Referer頭的值3級。
總而言之,檢測SQL注入越難,則--level必須設置的越高。
強烈建議在向郵件列表報告sqlmap無法檢測到某個注入點之前,提高此值。
3.7.2.風險等級
選項: --risk
此選項需要一個參數,該參數指定執行測試的風險。存在三個風險值。默認值為1,對于大多數SQL注入點而言,該值是無害的。風險值2將基于重查詢時間的SQL注入的測試添加到默認級別,值3也添加OR基于SQL注入的測試。
在某些情況下,例如在UPDATE語句中進行SQL注入,注入OR基于負載的有效負載可能導致表中所有條目的更新,這肯定不是攻擊者想要的。由于這個原因和其他原因,引入了該選項:用戶可以控制要測試哪些有效載荷,用戶可以任意選擇使用也可能具有危險性的載荷。按照前面的選項,sqlmap使用的有效負載在文本文件中指定xml/payloads.xml,您可以自由編輯和添加自己的有效負載。
3.7.3.頁面比較
選項:--string,--not-string,--regexp和--code
默認情況下,通過將注入的請求頁面內容與原始未注入的頁面內容進行比較,將True查詢與一個查詢False(基于布爾的盲SQL注入漏洞的粗略概念)區分開。這個概念并非總是可行,因為有時頁面內容在每次刷新時都會更改,甚至不注入任何內容,例如,當頁面具有計數器,動態廣告橫幅或動態呈現的HTML的任何其他部分時,不僅可能隨時間變化結果是用戶的輸入。為了繞過此限制,sqlmap會努力識別響應正文的這些摘要并進行相應處理。有時可能會失敗,這就是為什么用戶可以提供一個字符串(--string選項),該字符串應可以出現在原始頁面上(盡管不是必需的),也可以出現在所有True注入的查詢頁面上,但不是 False 頁面上。用戶可以提供正則表達式(--regexp選項)來代替靜態字符串。或者,用戶可以提供一個字符串(--not-string選項),該字符串不存在于原始頁面上,也不存在于所有True注入查詢頁面上,而是始終出現在False 頁面上。
這樣的數據對于用戶來說很容易檢索,只需嘗試將無效值注入到受影響的參數中,然后手動將原始(未注入)頁面內容與注入的錯誤頁面內容進行比較。這樣,區分將基于字符串存在或正則表達式匹配。
在情況下,當用戶知道一個的區別True查詢從False一個可以使用HTTP代碼(例如要做200的True和401為False),他可以提供這些信息的SqlMap(例如--code=200)。
開關:--text-only和--titles
如果用戶知道可以使用HTML標題(例如for 和for )來區分True查詢與查詢,False則可以使用switch打開基于標題的比較。Welcome``True``Forbidden``False``--titles
如果HTTP響應的正文中包含大量活動內容(例如腳本,嵌入等),則可以--text-only僅針對其文本內容過濾頁面(switch )。這樣,在很多情況下,您可以自動調整檢測引擎。
SqlMap中文版使用教程
推薦文章: