sqlmap基本使用


Sqlmap

sqlmap支持的數據庫包括:

    MySql、Oracle、PostgreSQL、Microsoft SQL Server、

    Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB

sqlmap可探測類型:

  基於布爾類型的盲注:根據返回頁面判斷條件真假的注入

  基於時間的盲注:即根據頁面返回的內容判斷任何信息,要利用條件語句查詢時間延遲語句是否執行(即頁面返回的時間)來判斷

  基於報錯的注入:頁面返回錯誤信息,或者把注入的語句的結果直接返回到頁面中

  聯合查詢注入:在可以返回union的情況下的注入

  堆聯合查詢注入:可以同時執行對條語句時的注入

sqlmap的功能

  數據庫指紋識別

  數據庫枚舉

  數據提取

  訪問目標文件系統,並在獲取完全的操作權限時實行任意命令注入

基本使用:

  GET方式

    sqlmap -u http://hostname/?id=1

    當參數大於等於兩個時,需要將url加上雙引號

  POST方式

    sqlmap -u http://hostname/ --data="id=1&name=2"

    或者抓包之后將請求頭放入req.txt中,然后sqlmap -r req.txt -p id

其他選項

  -v:顯示信息級別,缺省為1

    0、只顯示python嚴重的錯誤以及嚴重的信息

    1、同時顯示基本信息和警告信息

    2、顯示debug信息

    3、同時顯示注入的payload

    4、同時顯示http請求

    5、同時顯示http的響應頭

    6、同時顯示http的響應頁面

 目標選擇:

  -u url、-url=url:目標的url 

  -m:-m urls.txt,將目標地址保存在文件中,一行為一個url地址進行批量檢測

  -r:-r post.txt,從文件中加載http請求,sqlmap可以從文本中獲取http請求,

           可以跳過設置一些其他參數比如(cookie,post數據等)

           請求是https時需要配合-force-ssl來使用,或者在host頭后面加上:443

  -g:從google中加載結果目標url,只獲取前100個結果,需要掛代理

 請求:指定如何連接到目標的url

  -method=METHOD:強制使用給定的HTTP方法

  --data = DATA:--data="id=1&name=2",通過POST發送數據參數

  --cookie=COOKIE:設置http請求的cookie,level2時,會嘗試cookie注入,eg:"PHPSESSID=aaaa"

  -A agent:修改http請求中的user-agent,也可以使用--random-agent參數,

         隨機的從user-agent.txt中獲取。(level 3時會嘗試對user-agent注入)

  -H :額外的http頭,eg:"X-Forwarded-For:127.0.0.1"

  --referer:偽造http請求中的referer,level=3時,sqlmap嘗試referer注入

  --host:HTTP請求的host

  --ignore-code:忽略http請求error code eg:--ignore-404

  --ignore-proxy:忽略系統的代理設置

  --ignore-redirect:忽略重定向的嘗試

  --ignore-timeout:忽略連接超時

  --proxy=PROXY:通過代理服務器來連接目標url

  --proxy-file=PROXY FILE:加載一個代理列表

  --csrf-url=CSRFURL:url地址訪問提取anti-csrf令牌

  --csrf-token=SCRF TOKEN:參數保存反CSRF令牌

  --hpp :使用http參數污染的方法

  --force-ssl:強制使用ssl/https

 優化

  -o:打開所有優化開關

  --predict-output:預測普通查詢輸出

  --keep-alive:使用持久http(s)連接

  --null-connection:獲取頁面長度

  --threads=THREADS:線程

 注入

  -p:可測試的參數

  --skip=SKIP:跳過給定的參數

  --skip-static:跳過不為動態的參數

  --dbms=DBMS:設置后台數據庫  

  --os=OS:設置后端的DBMS操作系統

  --tamper=TAMPER:設置腳本

 檢測

  --level=LEVEL:設置執行測試的等級。1-5

  --risk=RISK:設置執行測試的風險。0-3

 技巧

  --technique:設置探測技術,默認情況下是所有方式(布爾型、報錯型、聯合查詢....)

  --time-sec=TIMESEC:DBMS響應的延遲時間,默認為5s

  --union-char=UHCAR:暴力猜測列的字符數

  --union-form=UFORM:sql注入union查詢使用的格式

 指紋

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

 枚舉

  -a:獲取所有信息

  -b:獲取DBMS的banner信息

  --current-user:獲取當前DBMS的用戶

  --current-db:獲取當前DBMS的數據庫

  --hostname:獲取主機名

  --is-dba:檢測當前用戶是不是數據庫管理員

  --users:枚舉DBMS用戶

  --passwords:枚舉數據庫管理系統用戶密碼哈希

  --privileges:枚舉數據庫管理系統用戶的權限 

  --roles:枚舉數據庫管理系統用戶的角色

  --dbs:爆破數據庫

  -D:指定數據庫

  --tables:爆表

  -T:指定表

  --columns:爆字段

  -C:指定某一列或者某些列

  --schema:枚舉數據庫結構

  --dump:轉儲數據庫表項(爆數據)

  --dump-all:轉儲所有表項

  --sql-shell:獲得交互式shell

 訪問系統文件

  需要是DBA權限

  --file-read=FILES:從后端的數據庫管理系統文件系統讀取文件,eg:--file-read "/etc/passwd"

  --file-write=WRITE:編輯后端數據庫管理系統的文件系統上的本地文件

  --file-dest=DFILE:后端數據庫管理系統寫入文件的絕對路徑

  sqlmap.py -u "http://www.xx.com/aa.aspx?id=123" --file-write=本地文件路徑 --file-dest 網站路徑(寫入路徑)+"/寫入的文件名"

  sqlmap.py -u "http://www.xx.com/aa.aspx?id=123" --file-write=F:/a.aspx --file-dest D:/虛擬目錄/Front/cx.aspx

  注:網站路徑必須為網站的真實物理路徑(即絕對路徑。也就是從盤符開始的路徑),否則無法寫入數據。

 操作系統訪問

  --os-shell:獲得shell

  --os-cmd=OSCMD:執行操作系統的命令

 其他選項

  --batch:自動進行選擇操作

  --charset=HCARSET:強制字符編碼

  --identify-waf:進行waf、ips、ids保護測試

 

sqlmap腳本

space2comment.py

  用/**/代替空格

apostrophemask.py

  用utf8代替引號

equaltolike.py

  like代替等號

space2dash.py 

  繞過過濾‘=’ 替換空格字符(”),(’–‘)后跟一個破折號注釋,一個隨機字符串和一個新行(’n’)

greatest.py 

  繞過過濾’>’ ,用GREATEST替換大於號。

space2hash.py

  空格替換為#號,隨機字符串以及換行符

apostrophenullencode.py

  繞過過濾雙引號,替換字符和雙引號。

halfversionedmorekeywords.py

  當數據庫為mysql時繞過防火牆,每個關鍵字之前添加mysql版本評論

space2morehash.py

  空格替換為 #號 以及更多隨機字符串 換行符

appendnullbyte.py

  在有效負荷結束位置加載零字節字符編碼

ifnull2ifisnull.py  

  繞過對IFNULL過濾,替換類似’IFNULL(A,B)’為’IF(ISNULL(A), B, A)’

space2mssqlblank.py(mssql)

  空格替換為其它空符號

base64encode.py 

  用base64編碼替換

space2mssqlhash.py 

  替換空格為#號,並添加一個字符

modsecurityversioned.py

  過濾空格,包含完整的查詢版本注釋

space2mysqlblank.py 

  空格替換其它空白符號(mysql)

between.py

  用between替換大於號(>)

space2mysqldash.py

  替換空格字符(”)(’ – ‘)后跟一個破折號注釋一個新行(’ n’)

multiplespaces.py

  圍繞SQL關鍵字添加多個空格

space2plus.py

  用+替換空格

bluecoat.py

  代替空格字符后與一個有效的隨機空白字符的SQL語句,然后替換=為like

nonrecursivereplacement.py

  雙重查詢語句,取代SQL關鍵字

space2randomblank.py

  代替空格字符(“”)從一個隨機的空白字符可選字符的有效集

chardoubleencode.py

  雙url編碼(不處理以編碼的)

unionalltounion.py

  替換UNION ALLSELECT UNION SELECT

unmagicquotes.py

  寬字符繞過 GPCaddslashes

randomcomments.py

  用/**/分割sql關鍵字

charunicodeencode.py

  字符串 unicode 編碼

securesphere.py

  追加特制的字符串

versionedmorekeywords.py

  注釋繞過

space2comment.py

  替換空格字符串(‘‘) 使用注釋‘/**/’

halfversionedmorekeywords.py

  關鍵字前加注釋

percentage.py

  asp允許在每個字符前面添加一個%號

sp_password.py 

  從DBMS日志的自動模糊處理的有效載荷中追加sp_password

charencode.py

  對給定的payload全部字符使用url編碼

randomcase.py

  隨機大小寫

modsecurityzeroversioned.py

  使用mysql內聯注釋方式(/*!00000*/)進行注入

 

很多選項沒有一一嘗試,如有錯誤,請師傅們指出。

參考鏈接:

  https://www.freebuf.com/sectool/164608.html

  https://blog.csdn.net/T780000063/article/details/78900474


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM