sqlmap筆記

sqlmap

簡介:

Sqlmap是一種開源的滲透測試工具,可以自動檢測和利用SQL注入漏洞以及接入該數據庫的服務器。它擁有非常強大的檢測引擎、具有多種特性的滲透測試器、通過數據庫指紋提取訪問底層文件系統并通過外帶連接執行命令.

  • 支持的數據庫: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB
  • SQL注入技術: boolean-based blind, time-based blind, error-based, UNION query-based, stacked queries and out-of-band.
  • 枚舉數據: users, password hashes, privileges, roles, databases, tables and columns.

安裝:

 $ git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

基本使用方法:

GET:

$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1"    // 測試該注入點是否能夠進行注入
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --dbs    // 對注入點進行注入,并導出數據庫名
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" -D database --tables    // 對database這個數據庫進行表的猜測
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" -D database -T admin --columns    // 對database下的admin表中字段進行猜測
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" -D database -T admin -C user,password --dump
// 對database下的admin表中user和password字段進行猜測并dump

POST:

$ python sqlmap.py -r header.txt
$ python sqlmap.py -r header.txt --dbs
...
// -r是從一個文件中載入HTTP請求
// 其余都與GET一樣將-u部分改成-r
// header.txt
POST /index.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/index.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 18

id=1

Cookie:

$ python sqlmap.py -u "http://127.0.0.1/index.php" --cookie="id=1" --level=2
...
// 其余與GET一樣,別忘記加上--cookie參數

其他:

$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --os-shell    // 獲取遠程主機的shell
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --os-cmd="whoami"    // 執行遠程主機的命令
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --is-dba    // 檢查DBMS用戶是否為DBA
$ python sqlmap.py -g "inurl:php?id="    // 通過google尋找url帶有php?id=字段的地址

參數詳解:

Options(選項):

-h, --help 顯示此幫助消息并退出
-hh 顯示詳細幫助并退出
--version 顯示程序的版本號并退出
-v VERBOSE 詳細級別:0-6(默認為1)

Target(目標):

以下至少需要設置其中一個選項,設置目標URL
-d DIRECT 直接連接到數據庫
-u URL, --url=URL 目標URL(e.g. "http://www.site.com/vuln.php?id=1")
-l LOGFILE 從Burp或WebScarab代理的日志中解析目標
-x SITEMAPURL 從遠程sitemap(.xml)文件中解析目標
-m BULKFILE 在文件中掃描多個目標
-r REQUESTFILE 從一個文件中載入HTTP請求
-g GOOGLEDORK 處理Google dork的結果作為目標URL
-c CONFIGFILE 從INI配置文件中加載選項。

Request(請求):

這些選項可以用來指定如何連接到目標URL
--method=METHOD 強制使用指定的請求方法(e.g. PUT)
--data=DATA 通過POST發送的數據字符串
--cookie=COOKIE HTTP Cookie頭
--cookie-del=COOKIEDEL 設置用于分割cookie值的字符
--load-cookies LOADCOOKIES 讀取包含Netsacape/wget格式的cookie文件
--drop-set-cookie 忽略響應的Set - Cookie頭信息
--user-agent=AGENT 指定 HTTP User - Agent頭
--random-agent 使用隨機選定的HTTP User - Agent頭
--host HOST HTTP主機頭
--referer=REFERER 指定 HTTP Referer頭
--header=HEADER 請求頭(e.g. "X-Forwarded-For: 127.0.0.1")
--headers=HEADERS 請求頭(e.g. "Accept-Language: fr\nETag: 123")
--auth-type=AUTHTYPE HTTP身份驗證類型(基本,摘要或NTLM)(Basic, Digest or NTLM)
--auth-cred=AUTHCRED HTTP身份驗證憑據(name:password)
--auth-file=AUTHFILE HTTP身份認證PEM證書/私鑰文件
--ignore-401 忽略HTTP 401錯誤(未經授權)
--proxy=PROXY 使用HTTP代理連接到目標URL
--ignore-proxy 忽略系統默認的HTTP代理
--tor 使用Tor匿名網絡
--tor-port=TORPORT 設置Tor代理端口除了默認
--tor-type=TORTYPE 設置Tor代理模式(HTTP, SOCKS4 or SOCKS5 (默認))
--check-tor 檢查Tor是否能夠正常使用
--delay=DELAY 在每個HTTP請求之間的延遲時間,單位為秒
--timeout=TIMEOUT 等待連接超時的時間(默認為30秒)
--retries=RETRIES 連接超時后重新連接的時間(默認3)
--randomize=RPARAM 隨意改變給定的參數值
--safe-url=SAFEURL 在測試過程中經常訪問的url地址
--safe-post=SAFEPOST POST發送數據給Safe url
--safe-req=SAFEREQ 從文件中加載安全HTTP請求
--safe-freq=SAFREQ 兩次訪問之間測試請求,給出安全的URL
--skip-urlencode Payload數據跳過URL編碼
--csrf-token=CSRFTOKEN 使用防CSRF令牌參數
--csrf-url=CSRFURL 通過URL訪問獲取防CSRF令牌
--force-ssl 強制使用SSL/HTTPS
--hpp 使用HTTP參數污染
--eval=EVALCODE
使用python代碼(e.g. "import hashlib;id2=hashlib.md5(id).hexdigest()")

Optimization(優化):

這些選項可用于優化sqlmap的性能。
-o 開啟所有優化開關
--predict-output 預測常見的查詢輸出
--keep-alive 使用持久的HTTP(s)連接
--null-connection 從沒有實際的HTTP響應體中檢索頁面長度
--threads=THREADS 最大的HTTP(s)請求并發量(默認為1)

Injection(注入):

這些選項可以用來指定測試哪些參數, 提供自定義的注入payloads和可選篡改腳本。
-p TESTPARAMETER 可測試的參數(s)
--skip=SKIP 跳過參數(s)測試
--skip-static 跳過測試靜態參數
--dbms=DBMS 強制后端的DBMS為此值
--dbms-cred=DBMSCRED DBMS身份驗證憑據(username:password)
--os=OS 強制后端的DBMS操作系統為這個值
--invalid-bignum 使用大數字參數的無效值
--invalid-logical 使用邏輯參數的無效值
--invalid-string 使用字符串參數的無效值
--no-cast 關閉Payload的計算機制
--no-escape 關閉字符串的避開機制
--prefix=PREFIX 注入payload字符串前綴
--suffix=SUFFIX 注入payload字符串后綴
--tamper=TAMPER 使用給定的腳本(s)篡改注入數據

Detection(檢測):

這些選項可以用來指定在SQL盲注時如何解析和比較HTTP響應頁面的內容。
--level=LEVEL 執行測試的等級(1-5,默認為1)
--risk=RISK 執行測試的風險(0-3,默認為1)
--string=STRING 查詢時有效時在頁面匹配字符串
--regexp=REGEXP 查詢時有效時在頁面匹配正則表達式
--text-only 僅基于在文本內容比較網頁
--titles 僅基于在題頭比較網頁

Techniques(技巧):

這些選項可用于調整具體的SQL注入測試。
--technique=TECH SQL注入技術測試(默認BEUST)
--time-sec=TIMESEC DBMS響應的延遲時間(默認為5秒)
--union-cols=UCOLS 定列范圍用于測試UNION查詢注入
--union-char=UCHAR 用于暴力猜解列數的字符
--union-from=UFROM 在表中使用聯合查詢的SQL注入在FROM部分
--dns-domain=DNSDOMAIN 打開DNS滲出支持
--second-order=SECONDORDER 搜索第二級響應頁面的地址

Fingerprint(指紋):

-f, --fingerprint 執行檢查廣泛的DBMS版本指紋

Enumeration(枚舉):

這些選項可以用來列舉后端數據庫管理系統的信息、表中的結構和數據。此外,您還可以運行您自己
的SQL語句。
-a, --all 檢索所有
-b, --banner 檢索數據庫管理系統的標識
--current-user 檢索數據庫管理系統當前用戶
--current-db 檢索數據庫管理系統當前數據庫
--is-dba 檢測DBMS當前用戶是否DBA
--users 枚舉數據庫管理系統用戶
--passwords 枚舉數據庫管理系統用戶密碼哈希
--privileges 枚舉數據庫管理系統用戶的權限
--roles 枚舉數據庫管理系統用戶的角色
--dbs 枚舉數據庫管理系統數據庫
--tables 枚舉的DBMS數據庫中的表
--columns 枚舉DBMS數據庫表列
--schema 枚舉DBMS數據庫模式
--count 檢索表的條目數量
--dump 轉儲數據庫管理系統的數據庫中的表項
--dump-all 轉儲所有的DBMS數據庫表中的條目
--search 搜索列(s),表(s)和/或數據庫名稱(s)
-D DB 要進行枚舉的數據庫名
-T TBL 要進行枚舉的數據庫表
-C COL 要進行枚舉的數據庫列
-X EXCLUDECOL 不要進行枚舉的數據庫列
-U USER 用來進行枚舉的數據庫用戶
--exclude-sysdbs 枚舉表時排除系統數據庫
--pivao-column=PIVALCOLUMN 關鍵的字段名
--where=DUMPWHERE 使用WHERE的環境在DUMP表的時候
--start=LIMITSTART 第一個查詢輸出進入檢索
--stop=LIMITSTOP 最后查詢的輸出進入檢索
--first=FIRSTCHAR 第一個查詢輸出字的字符檢索
--last=LASTCHAR 最后查詢的輸出字字符檢索
--sql-query=QUERY 要執行的SQL語句
--sql-shell 提示交互式SQL的shell
--sql-file=SQLFILE 從給定的文件(s)中執行sql語句

Brute force(蠻力):

這些選項可以被用來運行蠻力檢查。
--common-tables 檢查存在共同表
--common-columns 檢查存在共同列

User-defined function injection(用戶自定義函數注入):

這些選項可以用來創建用戶自定義函數。
--udf-inject 注入用戶自定義函數
--shared-lib=SHLIB 共享庫的本地路徑

File system access(訪問文件系統):

這些選項可以被用來訪問后端數據庫管理系統的底層文件系統。
--file-read=RFILE 從后端的數據庫管理系統文件系統讀取文件
--file-write=WFILE 編輯后端的數據庫管理系統文件系統上的本地文件
--file-dest=DFILE 后端的數據庫管理系統寫入文件的絕對路徑

Operating system access(操作系統訪問):

這些選項可以用于訪問后端數據庫管理系統的底層操作系統。
--os-cmd=OSCMD 執行操作系統命令
--os-shell 交互式的操作系統的shell
--os-pwn 獲取一個OOB shell,meterpreter或VNC
--os-smbrelay 一鍵獲取一個OOB shell,meterpreter或VNC
--os-bof 存儲過程緩沖區溢出利用
--priv-esc 數據庫進程用戶權限提升
--msf-path=MSFPATH Metasploit Framework本地的安裝路徑
--tmp-path=TMPPATH 遠程臨時文件目錄的絕對路徑

Windows registry access(Windows注冊表訪問):

這些選項可以被用來訪問后端數據庫管理系統Windows注冊表。
--reg-read 讀一個Windows注冊表項值
--reg-add 寫一個Windows注冊表項值數據
--reg-del 刪除Windows注冊表鍵值
--reg-key=REGKEY Windows注冊表鍵
--reg-value=REGVAL Windows注冊表項值
--reg-data=REGDATA Windows注冊表鍵值數據
--reg-type=REGTYPE Windows注冊表項值類型

General(一般):

這些選項可以用來設置一些一般的工作參數。
-s SESSIONFILE 保存和恢復檢索會話文件的所有數據
-t TRAFFICFILE 記錄所有HTTP流量到一個文本文件中
--batch 從不詢問用戶輸入,使用所有默認配置
--binary-fields=BINARYFIELDS 具有二進制值的結果字段(e.g. "digest")
--charset=CHARSET 強制使用用于數據檢索的字符編碼
--crawl=CRAWL 從目標網址抓取網站
--crawl-exclude=CRAWLEXCLUDE 用正則表達式排除爬取的頁面(e.g. "logout")
--csv-del=CSVDEL 使用設定的字符輸出CSV(默認 ",")
--dump-format=DUMPFORMAT DUMP格式(CSV(默認), HTML or SQLITE)
--eta 顯示每個輸出的預計到達時間
--flush-session 刷新當前目標的會話文件
--forms 目標網址的解析和測試格式
--fresh-queries 忽略在會話文件中存儲的查詢結果
--hex 數據檢索使用DBMS十六進制方法(s)
--output-dir=OUTPUTDIR 自定義輸出目錄
--parse-errors 解析和顯示響應中的DBMS錯誤信息
--save=SAVECONFIG file保存選項到INI配置文件
--scope=SCOPE 從所提供的代理日志中過濾器目標的正則表達式
--test-filter=TESTFILTER 選擇測試用的payload或標題(e.g. ROW)
--test-skip=TESTSKIP 跳過測試用的payload或標題(e.g. BENCHMARK)
--update 更新sqlmap

Miscellaneous(雜項):

-z MNEMONICS 使用短記憶法(e.g. "flu,bat,ban,tec=EU")
--alert=ALERT 找到sql注入的時候,運行主機命令(s)
--answers=ANSWERS 設置疑問答復(e.g. "quit=N,follow=N")
--beep 發現SQL注入時提醒
--check-payload IDS對注入payloads的檢測測試
--cleanup SqlMap具體的UDF和表清理DBMS
--dependencies 檢測sqlmap的依賴(非核心)
--disable-coloring 關閉控制臺輸出的顏色
--gpage=GOOGLEPAGE 從指定的頁碼使用谷歌dork結果
--identity-waf 對WAF/IPS/IDS進行全面的測試
--mobile 模仿智能手機HTTP請求頭
--offline 脫機模式工作(僅使用會話數據)
--page-rank Google dork結果顯示網頁排名(PR)
--purge-output 安全地刪除輸出目錄中的所有內容
--skip-waf 跳過探測WAF/IPS/IDS保護
--smart 如果探測.就進行深度測試
--sqlmap-shell 提供一個與sqlmap互動的shell
--wizard 給初級用戶的簡單向導界面

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • sqlmap用戶手冊 說明:本文為轉載,對原文中一些明顯的拼寫錯誤進行修正,并標注對自己有用的信息。 ======...
    wind_飄閱讀 2,098評論 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,428評論 2 22
  • 每天上班我都要走這段小路,相同的方向,相等的距離。 柏油的路面,石頭的路沿,路邊幾個小小的店鋪,平凡無奇。 我一直...
    xingcheng閱讀 338評論 0 0
  • 上海這地方,給死者燒紙好像就地燒,畫個黃色大圈圈,我走路都不好走進去,怕誤入
    茶數閱讀 353評論 0 0