2026年8月13日 星期四

【公開課】教育訓練成果

 



SQL Injection -- Union研發日誌

標題

說明

知識描述

1. 定義:網頁程式直接將使用者輸入的參數拼接到 SQL 語句中,導致攻擊者可利用 UNION 操作符強行合併自定義的查詢。
2. 危害性:攻擊者可跨越權限限制,任意讀取資料庫內所有敏感資料(如本例中的 Flag、帳密等),甚至進一步控制資料庫。

原理思考

1. 底層邏輯:利用 SQL 語法的 UNION 特性將兩個 SELECT 的結果集結合輸出。
2. 成立關鍵:後台 SQL 與惡意 UNION 指令的欄位數量必須完全一致,且資料型態必須相容
3. 實踐證明:本次演練透過 ORDER BY Cardinality violation 報錯,精確測出原始欄位數為 4 個,並利用 -1 使原查詢失效,順利在網頁「顯示位」輸出 database() version() 資訊。

联想思考

1. 相似漏洞Boolean-based blind(布林盲注)Error-based(報錯注入)Time-based blind(時間盲注)
2. 共同本質:皆屬於外部輸入未經過濾、未採取強型別轉型、未實現程式與資料分離而導致的 SQL 隱碼漏洞。

應用思考

1. 漏洞連鎖組合:可與檔案讀寫功能(Into Outfile/Load_File 搭配,若權限足夠可直接讀取 Windows 系統檔案或寫入 WebShell 進而取得系統權限(RCE)。
2. 資訊蒐集擴大:利用 information_schema 系統字典表進行結構列舉,達到全面「拖庫(Dump)」的成果。

經驗聯想

在許多舊型網站或 CTF 靶機環境中,開發者常因貪圖方便直接使用字串拼接(如 id= 串接變數)來撰寫 SQL,且未關閉 PHP Fatal Error 報錯訊息,這往往成為攻擊者快速定位欄位數與環境情資的突破口。

指導行動

1. 程式修補:推動防守方(Blue Team)捨棄字串拼接,全面改用 PDO 預編譯與參數化查詢(Prepared Statements 或進行強制型別轉換(如 (int)$_GET['id'])。
2. 資安偵查:未來遇到新域名(如 cyberskill.test),應先透過修改 Hosts 檔案進行綁定,再實施目錄枚舉或 POST 表單探查,擴大檢測面。

工具衍生

1. 自動化檢測:搭配 SQLMap 工具(使用 -u--dbs-D-T--dump --batch 參數組合)。
2. 工具威力SQLMap 能在數秒內自動化重現「算欄位、找顯示位、倒出資料表」的完整人工步驟,極大提升滲透測試的效率。


沒有留言:

張貼留言

【公開課】教育訓練成果

  SQL Injection -- Union 研發日誌 標題 說明 知識描述 1. 定義 :網頁程式直接將使用者輸入的參數拼接到 SQL 語句中,導致攻擊者可利用 UNION 操作符...