* 注入漏洞攻擊利用的重點是具有交互功能的使用數據庫的動態站點
* 注入漏洞攻擊的技術重點是在服務器端執行攻擊者的SQL語句
* 注入漏洞攻擊的方法重點在于動態網頁存在不安全的SQL生成語句
本文內容重點在于介紹注入漏洞的攻擊過程。
在很多動態web應用中,會提供給用戶輸入的接口,并且根據用戶的輸入來生成數據操作的SQL語句。比如一個簡單的用戶登錄對話窗。
所謂注入漏洞,是指在上述描述的部位,利用輸入的數據參與執行的原理,輸入惡意的內容,進而該惡意內容可被執行。舉例如下:
在一個登錄界面中,用戶要輸入自己的ID號和密碼來完成登錄過程,生成的SQL可能是如下這個樣子:
select * from t_users where user_name=' + 用戶輸入的ID + ' and user_pwd=' + 用戶輸入的密碼 +'
一個非法的窺探者,在用戶ID輸入框中輸入 00' or '1'='1 并在密碼框里輸入00,生成的整個SQL就變成:
select * from t_users where user_name='00‘ or '1'='1' and user_pwd='00'
這樣,查詢是有結果的,對于不嚴密的判斷,非法用戶得以進入該系統。
上面的例子展示了非法登錄的手段。如果用于產品檢索,則一個普通用戶權限的用戶可以用非法手段獲得全部產品列表。更嚴重的情況是非法用戶利用這種漏洞執行系統存儲過程,建立系統用戶,打開系統限制,完成系統登錄。
如果我們利用數據庫存儲過程來完成檢索,利用參數傳遞的方式來傳送參數,就可以避免這種情況。