欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL注入原理介紹

互聯(lián)網(wǎng)   發(fā)布時(shí)間:2008-10-08 19:36:27   作者:佚名   我要評論
對于Web應(yīng)用來說,注射式攻擊由來已久,攻擊方式也五花八門,常見的攻擊方式有SQL注射、命令注射以及新近才出現(xiàn)的XPath注射等等。本文將以SQL注射為例,在源碼級對其攻擊原理進(jìn)行深入的講解。 一、注射式攻擊的原理 注射式攻擊的根源在于,程序命令和用戶數(shù)據(jù)(即用
四、構(gòu)造SQL注射代碼 為了成功地注入SQL命令,攻擊者必須將開發(fā)人員的現(xiàn)有SQL命令轉(zhuǎn)換成一個(gè)合法的SQL語句,當(dāng)然,要盲注是有些難度的,但一般都是這樣: 'OR1=1– 或者 ')OR1=1-- 此外,許多Web應(yīng)用提供了帶來錯(cuò)誤報(bào)告和調(diào)試信息,例如,利用'OR1=1--對Web應(yīng)用進(jìn)行盲注時(shí),經(jīng)??吹饺缦滤镜腻e(cuò)誤信息: Errorexecutingquery:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'SELECT(title,body)FROMblog_tableWHEREcat='OR1=1'atline1 該錯(cuò)誤信息詳細(xì)地為我們展示了完整的SQL語句,在此種情況下,SQL數(shù)據(jù)庫所期待的好象是一個(gè)整數(shù),而非字符串,所以可以注入字符串OR1=1--,把單引號去掉就應(yīng)該能成功注入了。對于大多數(shù)SQL數(shù)據(jù)庫,攻擊者可以在一行中放入多個(gè)SQL語句,只要各個(gè)語句的語法沒有錯(cuò)誤就行。在下面的代碼中,我們展示了如何將username設(shè)為'OR1=1并把password設(shè)為x來返回最后的用戶ID: Stringquery="SELECTidFROMuser_tableWHERE" "username='" username "'AND" "password=PASSWORD('" password "')";
當(dāng)然,攻擊者可以注入其它的查詢,例如,把username設(shè)為: 'OR1=1;DROPTABLEuser_table;-- 而這個(gè)查詢將變成: SELECTidFROMuser_tableWHEREusername=''OR1=1;DROPTABLEuser_table;--'ANDpassword=PASSWORD('x'); 它相當(dāng)于: SELECTidFROMuser_tableWHEREusername=''OR1=1;DROPTABLEuser_table;
這個(gè)語句將執(zhí)行句法上完全正確的SELECT語句,并利用SQLDROP命令清空user_table。 注射式攻擊不必非要進(jìn)行盲式攻擊,因?yàn)樵S多Web應(yīng)用是利用開放源代碼工具開發(fā)的,為了提高注射式攻擊的成功率,我們可以下載免費(fèi)的或者產(chǎn)品的試用版,然后在自己的系統(tǒng)上搭建測試系統(tǒng)。如果在測試系統(tǒng)上發(fā)現(xiàn)了錯(cuò)誤,那么很可能同樣的問題也會(huì)存在于所有使用該工具的Web應(yīng)用身上。 五、小結(jié) 我們在本文中向讀者介紹了注射攻擊的根本原因,即沒有對數(shù)據(jù)和命令進(jìn)行嚴(yán)格區(qū)分。然后通過一些程序源碼對SQL的攻擊進(jìn)行了細(xì)致的分析,使我們對SQL注射機(jī)理有了一個(gè)深入的認(rèn)識。如果您是一名web應(yīng)用開發(fā)人員,那么您就當(dāng)心了,一定不要盲目相信用戶端的輸入,而要對用戶輸入的數(shù)據(jù)進(jìn)行嚴(yán)格的“消毒”處理,否則的話,SQL注射將會(huì)不期而至。

相關(guān)文章

最新評論