sql注入學習筆記 2 sqlmap引數介紹

2021-10-07 17:01:25 字數 4921 閱讀 5359

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

探測級別

--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            只有在積極啟發式的情況下才執行徹底的測試,當有大量檢測目標時,只選擇基於錯誤的檢測結果
這些選項可用於調整特定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伺服器,可以提高榨取資料的速度

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

--common-tables    檢查常見表的存在性

--common-columns 檢查常見索引的存在性

--common-files 檢查常見檔案的存在性

這些選項可用於優化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這個引數,其他的可以看情況使用

這類選項可用於列舉表中包含的後端資料庫管理系統資訊、結構和資料

-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 檢索所有

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

-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"

)

SQL注入學習筆記(2)

在做題時的一些總結 注釋 1.單行注釋 mysql中 也可以 注意 瀏覽器url中 有特殊作用,不一定能用 2.多行注釋 3.注 號在語句中變成了空格。用來和後面的單引號分隔開,將後面的語句注釋。了解原理後便知道了 無法使用的原因,是因為 與後面的單引號連線在一起,無法形成有效的mysql語句 後面...

SQL注入學習筆記

sql注入漏洞是由於sql語句的呼叫方法不完善而產生的安全隱患。一旦應用中存在sql注入漏洞,就可能造成如下影響。值得注意的是,以下影響中攻擊者都能夠直接對伺服器實施主動攻擊,而不需要使用者參與。根據資料庫引擎的不同,通過sql注入攻擊還可能會達到下列效果。sql注入攻擊能夠以開發者意想不到的方式改...

sql注入學習筆記

1.什麼是sql注入 sql注入就是指web應用程式對使用者輸入的資料的合法性沒有判斷,前端傳入後端的引數帶有資料庫查詢的語句,攻擊者可以構造不同的sql語句來實現對資料庫的操作。2.sql注入原理 sql注入漏洞產生需要滿足以下兩個條件。引數使用者可控,前端傳給後端的引數內容是使用者可以控制的 引...