sql注入學習筆記(2)--sqlmap參數介紹

Detection探測

這些選項可用於自定義探測階段
探測級別

 --level=     要執行的測試級別(1-5,默認爲1),數值越大,探測越詳細
檢查cookie當中的注入點level >=2
檢查user-agent,Referer的注入點Level >= 3
檢查host的注入點 Level =5
/usr/share/sqlmap/data/xml/payloads
這個目錄下面有詳細的payload
 --risk=        要執行的測試的風險(1-3,默認爲1)
 risk升高可能造成數據的纂改

人爲標識真假

--string=   當查詢計算爲真時匹配的字符串
--not-string=  當查詢被計算爲False時匹配的字符串
 --text-only         僅根據文本內容比較頁面
 --titles           僅根據標題比較頁面
 --code=        當查詢被計算爲True時匹配的HTTP代碼
 --regexp=     正則表達式在查詢評估爲True時匹配,這個可能會出現在比如說true返回的內容可能有幾種,通過正則匹配
--smart            只有在積極啓發式的情況下才執行徹底的測試,當有大量檢測目標時,只選擇基於錯誤的檢測結果

Techniques技巧

這些選項可用於調整特定SQL注入技術的測試

--technique=  使用的SQL注入技術(默認爲“BEUSTQ”)
B:bool基於布爾,E:error基於錯誤,U:union聯合查詢,S:Stacked堆疊查詢,T:time基於時間,Q:inline_query內聯查詢
--time-sec=   基於時間的注入檢測,延遲數據庫響應的秒數(默認爲5)
--union-cols=  測試聯合查詢SQL注入的列的範圍,默認是1-10列,隨着level提高可以到50列,如果我們只想查6-9,就用--union-cols 6-9
--union-char=  用於強制列數的字符,union查詢默認使用null,有時候null會失敗,可以手動指定比如說123這些無關緊要
--union-from=  表中使用的UNION查詢的SQL注入
有些情況下在聯合查詢中必須指定一個有效和可訪問的表名,否則聯合查詢會執行失敗,如在微軟的Access中,也就是說,某些DBMS不支持“SELECT 1,2;”這樣的語句,SELECT必須有FROM)用此參數指定這個表名,如:“–union-from=users”

下面這三種用的會少一點,瞭解一下,如果在特殊情況下可能會用上

--second-url=  結果頁面URL搜索二階響應,有些情況下可能注入的結果會在另一個頁面顯示,這時就需要指定其他的頁面
-second-req=  從文件加載二級HTTP請求
--dns-domain=  域名用於DNS泄露攻擊,攻擊者控制了某個dns服務器,可以提高榨取數據的速度

Brute force暴力

這些選項可用於運行強制檢查

--common-tables    檢查常見表的存在性
--common-columns     檢查常見索引的存在性
--common-files       檢查常見文件的存在性

Optimization優化

這些選項可用於優化sqlmap的性能

--predict-output    預測常見查詢輸出,根據檢測方法,比較返回值和統計表內容,不斷縮小檢測範圍,提高檢測效率,與--threads參數不兼容,比如說我們通過查詢結果可以判斷出數據庫是mysql,那麼就不會繼續去檢測其他類型了(依據是/usr/share/sqlmap/data/txt/common-outputs.txt)
--keep-alive        使用持續HTTP(s)連接,性能好,與proxy不兼容
--null-connection  檢索頁面長度,而不需要實際的HTTP響應體,可以降低網絡帶寬消耗
--threads=  最大併發HTTP請求數(默認爲1)
-o                打開所有優化開關

個人比較推薦使用predict這個參數,其他的可以看情況使用

Enumeration枚舉類型

這類選項可用於枚舉表中包含的後端數據庫管理系統信息、結構和數據

-b  --banner       檢索數據庫管理系統的版本
--current-user     檢索數據庫管理系統的當前用戶,比如說root,這個用戶是指root@localhost裏面的這個root
--current-db        當前使用的數據庫,比如說library什麼的
--hostname          主機名,比如說我們的metaspolitable2
--is-dba            dba(database administrator)判斷當前的用戶是不是管理員=
--users             枚舉數據庫的所有用戶
--passwords         枚舉數據庫用戶的密碼hash
--privileges       枚舉數據庫用戶的權限,也可以針對一個用戶進行枚舉 --privileges -U username
--roles            枚舉數據庫用戶的角色(這個如果學過數據庫應該可以理解,權限和角色的分配)
--dbs              枚舉所有的數據庫
--tables            枚舉數據庫下面的表
--columns          枚舉表裏面的索引
-D               指定數據庫的枚舉
-T              指定表的枚舉
-C              指定索引的枚舉
-U             指定用戶枚舉
--exclude-sysdbs    枚舉表時要排除DBMS系統數據庫
--count            檢索表的項數
--dump             爆DBMS數據庫表項
--dump-all          爆所有DBMS數據庫表項
--search            搜索列,表和/或數據庫名稱
--comments          在枚舉期間檢查DBMS註釋
--statements        檢索在DBMS上運行的SQL語句
-X        不枚舉的DBMS數據庫標識符
--pivot-column=   主列名稱
--schema           列舉DBMSschema
--where= 在條件下,dump表裏面的數據
--start= 首先轉儲要檢索的表條目
--stop=   要檢索的最後一個轉儲表條目
--first=   首先查詢輸出要檢索的字元
--last=   最後一個查詢輸出要檢索的字元
--sql-query=        要執行的SQL語句
--sql-shell         交互式SQL shell的提示符
--sql-file=  執行給定文件中的SQL語句
-a, --all          檢索所有

Injection注入

這些選項可用於指定要測試的參數、提供自定義注入負載和可選的篡改腳本

-p     可測試的參數,這個可以手動指定我們要測試的注入點,有的web可能在host,cookie,user-agent等存在注入點,我們可以通過這個選型進行手動指定 
比如說
-p "user-agent", 這樣可以避免在level爲1下檢測不到這些注入點
--skip=         跳過給定參數的測試,跟上面的剛好是相反的,用法相同
--skip-static      跳過看起來不是動態的測試參數
--dbms=            手動指定DBMS類型,比如說--dbms="mysql"
--os=               手動指定操作系統的類型,比如說--os="linux"
--dbms-cred=        DBMS身份驗證憑證(user:password)
--invalid-bignum    使用大的數字使值無效
--invalid-logical   使用邏輯操作使值無效
--invalid-string   使用隨機字符串使值無效
通常sqlmap使用負值比如說id=-13使參數取值失效,當然也可以修改爲以上幾種方式
--no-cast           在檢索結果時Sqlmap會將所有輸入轉換爲字符串類型,若遇到空值(NULL)則將其替換爲空白字符
但是在老版本的Mysql中這樣做會導致數據檢索出現問題,因此添加了“–no-cast”來告訴Sqlmap不要這樣做
--no-escape        關閉字符串轉義機制
--prefix=PREFIX    注入有效載荷前綴字符串
--suffix=SUFFIX     注入有效負載後綴字符串
這兩個主要是應對一些個別的應用,有時候可能查詢語句特別奇怪,sqlmap可能注入的payload無法正常使用,需要我們添加一些內容來使payload正常執行
--tamper=   使用給定的腳本篡改注入數據
/usr/share/sqlmap/tamper這個目錄下有一系列混淆腳本,可以自行選擇使用

下面這兩個參數我也不是很理解…網上也沒有詳細的說明

--param-exclude=  RRegexp從測試中排除參數(例如。“ses”)
--param-filter=  按位置選擇可測試參數(例如:"POST")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章