* 注入漏洞攻擊利用的重點是具有交互功能的使用數(shù)據(jù)庫的動態(tài)站點
* 注入漏洞攻擊的技術(shù)重點是在服務(wù)器端執(zhí)行攻擊者的SQL語句
* 注入漏洞攻擊的方法重點在于動態(tài)網(wǎng)頁存在不安全的SQL生成語句
本文內(nèi)容重點在于介紹注入漏洞的攻擊過程。
在很多動態(tài)web應(yīng)用中,會提供給用戶輸入的接口,并且根據(jù)用戶的輸入來生成數(shù)據(jù)操作的SQL語句。比如一個簡單的用戶登錄對話窗。
所謂注入漏洞,是指在上述描述的部位,利用輸入的數(shù)據(jù)參與執(zhí)行的原理,輸入惡意的內(nèi)容,進(jìn)而該惡意內(nèi)容可被執(zhí)行。舉例如下:
在一個登錄界面中,用戶要輸入自己的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'
這樣,查詢是有結(jié)果的,對于不嚴(yán)密的判斷,非法用戶得以進(jìn)入該系統(tǒng)。
上面的例子展示了非法登錄的手段。如果用于產(chǎn)品檢索,則一個普通用戶權(quán)限的用戶可以用非法手段獲得全部產(chǎn)品列表。更嚴(yán)重的情況是非法用戶利用這種漏洞執(zhí)行系統(tǒng)存儲過程,建立系統(tǒng)用戶,打開系統(tǒng)限制,完成系統(tǒng)登錄。
如果我們利用數(shù)據(jù)庫存儲過程來完成檢索,利用參數(shù)傳遞的方式來傳送參數(shù),就可以避免這種情況。