# Web SQL injection Lab3 一樣先進到網站裡。 ![image](https://hackmd.io/_uploads/HyuaCb47el.png) 本題要知道資料庫的版本號,所以要測試 UNION 查詢的欄位數與是否可以顯示文字,因此我先攔截請求並修改。 ![image](https://hackmd.io/_uploads/HJFhyfV7el.png) ![image](https://hackmd.io/_uploads/H10T1MEQel.png) ``` '+UNION+SELECT+'abc','def'+FROM+dual-- ``` - `+` 是空格的 URL encoding。 - `dual` 是 Oracle 中的虛擬表(大多數 DBMS 都有類似的 dummy 表)。 這個 payload 嘗試用 'abc' 和 'def' 來測試是否有 兩欄,且都能顯示文字資料,若頁面成功顯示出 abc 和 def,代表: - 查詢回傳的欄位數是 2。 - 兩欄都能顯示文字。 ![image](https://hackmd.io/_uploads/SJp-xMNmeg.png) 確定會顯示文字在畫面上後,最後就來顯示資料庫版本。 ``` '+UNION+SELECT+BANNER,+NULL+FROM+v$version-- ``` - v$version 是 Oracle 資料庫中的系統檢視表,包含版本資訊。 - BANNER 是其中包含版本字串的欄位。 - +NULL 是填補第二欄,因為 UNION SELECT 的欄位數必須一致。 ![image](https://hackmd.io/_uploads/Sk7FlzEXgl.png)