iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
自我挑戰組

從0開始學資安系列 第 8

Day 8 SQL Injection

  • 分享至 

  • xImage
  •  

前幾天有稍微認識到其中一種常見的攻擊:SQL注入,讓我們稍微複習一下:

SQL injection:
這是一種發生在應用程式與資料庫層的安全漏洞。再輸入的字串中夾帶SQL指令,讓設計不良的程式忽略字元檢查,那麼這些夾帶進去的惡意指令就會被認為是正常的SQL指令執行,並遭到破壞或入侵。
-- wiki

接著我們要來更深入的認識SQL Injection。

SQL是甚麼?

SQL全稱為「Structrured Query Language」,是一種操作資料庫、存取出所需資料的一套查詢語言,以表格形式儲存資料。

  • 在SQL中,;代表將語句分開,--代表忽視,用這兩個我們可以達到SQL injection的概念

Union-based SQL Injection

Union運算子

Union運算子用來將兩個(以上)SQL查詢的結果合併起來,而由UNION查詢中個別SQL語句所產生的欄位,但他們要有相同的列數和相似的數據類型。
也就是說,當有多個查詢想要一起執行並返回結果時,可以使用UNION來合併結果。
例如:

SELECT name, email FROM employees
UNION
SELECT name, email FROM customers;

結果就會是employeescustomers 兩個表的所有nameemail

攻擊方法

攻擊者會利用UNION把自己的查詢結果合併到合法查詢中,這樣就可以和合法資料合併,並竊取到資料。
例如輸入:

' UNION SELECT username, password FROM users--

Boolean-based SQL Injection

利用布林值來猜測條件來觀察網站的行為,並推測數據。
例如:
輸入正常帳號及密碼為AAA12345,資料庫的SQL指令是:

Where user_name = 'AAA' and password = '12345'

但若駭客輸入的資料是空白和OR 1=1:

Where user_name=‘ OR 1=1’ and password=‘ OR 1=1’

條件都會判定為TRUE,就會被獲取資料。

參考資料


上一篇
Day 7 實作練習:TryHackMe
下一篇
Day9 XSS攻擊
系列文
從0開始學資安30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言