1.什麼是SQL Injection?
SQL Injection就是駭客在網站輸入框裡面輸入惡意的SQL語句,讓後端資料庫執行,利用網站的防護漏洞,直接操控資料庫。
舉例一個情況:
正常網站要查詢使用者資訊會輸入
SELECT * FROM users WHERE id = '1';
而駭客可能輸入
SELECT * FROM users WHERE id = '1' OR 1=1;
如此一來,全部的使用者資訊將會一覽無遺。
2.DVWA實際操作
登入DVWA後,在左側選單中會看到一個SQL Injection的選項,點進去後,會有一個輸入框顯示「User ID」,輸入數字就能查詢對應的使用者,我這邊是用上面舉例的情況做輸入
(查詢使用者1的帳號資訊)
接著嘗試輸入1 OR 1=1
,這邊要注意的是每個網站後端資料庫預設的語法有些微差異,這邊的輸入框內容會直接帶入到後端的資料庫語句,若本來預設已有單引號,直接輸入1 OR 1=1
是沒有用的,user_id='1 OR 1=1'
不會成立,因此無法達到我們要的目的,應該要改成1' OR '1'='1
,這樣一來就是完整的user_id='1' OR '1'='1'
,整個資料表才會顯示出來。
3.心得
之前接觸過一些SQL語法,所以在這次操作,並沒有太陌生的感覺,雖然DVWA網站能夠輕鬆快速使用,但在語句上還是要稍微注意一下,我一開始直接輸入就只跳出一個使用者資訊,問了chatGPT才知道一個小小的單引號竟然能影響這麼大,這次的操作也很有趣,明天要來試試看XSS!