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