昨天介紹了緩衝區溢出跟他的攻擊原理,今天來介紹另一個攻擊手法啦。今天的主角就是注入式攻擊,它在資安風險上也是赫赫有名的攻擊手法,就讓我們來看看他是怎麼運作的吧!
SQL (Structured Query Language)又稱結構化查詢語言,是一種專門用於管理關聯式資料庫管理系統(RDBMS)或關係流資料管理系統(RDSMS)的語言程式。作用的範圍在於插入、查詢、更新及刪除,跟資料庫有關係的通常都離不開SQL語言。
那為什麼會突然提到SQL呢?因為今天我們要講的就是注入式攻擊裡面尤為常見的SQL注入式攻擊。
SQL注入式攻擊的方式是藉由透過更改SQL原句來改變他的語意,從而達成目的。
今天我們一樣用登入系統來作為例子,假設我們輸入帳號密碼的SQL程式碼如下圖:
SELECT * FROM users WHERE email = `${email}` AND password = `${password}`
假設有心人士在密碼的欄位輸入:
'or 1=1 --
這樣到底會發生什麼事情呢?
SELECT * FROM users WHERE email = `myemail123@test.com` AND password = ``or 1=1 -- Limit 1
前面的`會讓輸入密碼的input方塊關閉,而後面的--會使後面註解化,讓駭客甚至不需要知道你的密碼就能從資料庫裏面竊取你的個人資料。所以在這方面都得很小心的去防範,例如將特殊符號先轉譯等。
參考資料
零基礎資安系列(四)-認識注入攻擊( Injection Attack)
SQL
身為 Web 工程師,你一定要知道的幾個 Web 資訊安全議題