SQL injection
https://ithelp.ithome.com.tw/m/articles/10240102
常見的 SQL injection 類型
- 查詢隱藏的數據
- 修改 SQL 語法來查詢資料庫的其他資料。
- 影響應用程式邏輯
- 修改 SQL 語法來影響應用程式的邏輯。
- UNION 攻擊
- 修改 SQL 語法來查詢其他資料庫表的資料。
- 檢查資料庫
- 修改 SQL 語法來查詢資料庫版本與架構。
- 盲SQL注入
- 修改 SQL與法但結果不會直接回傳在頁面。
假設一個購物商場透過 URL 對伺服器請求,查詢類別為 Gifts
https://feifei.tw/products?category=Gifts
參數 category 的內容會傳到後端並進行 SQL語法的查詢
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
此 SQL 語法的內容為
- 選擇所有欄位名稱
- 從資料表
products category欄位為Gifts- 且
released發布狀態為 1 (已發布)
SQL 註解為 --
我們可以嘗試將 AND released = 1 透過 -- 註解
https://feifei.tw/products?category=Gifts'+OR+1=1--
- +在網址列為 %20 表示空白的意思
SQL語法的查詢
SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1
不同資料庫的註解方法
影響應用程式邏輯

假設一個可以利用帳號密碼登入的系統,輸入帳號密碼後 SQL 語句
SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'
SELECT * FROM users WHERE username = 'administrator'--' AND password = ''
留言
張貼留言