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

什么是CC攻擊 判斷網(wǎng)站是否被CC攻擊并且如何防御CC攻擊
CC主要是用來(lái)攻擊頁(yè)面的,大家都有這樣的經(jīng)歷,就是在訪問(wèn)論壇時(shí),如果這個(gè)論壇比較大,訪問(wèn)的人比較多,打開頁(yè)面的速度會(huì)比較慢,對(duì)不?!一般來(lái)說(shuō),訪問(wèn)的人越多,論壇的頁(yè)2024-01-06
Windows系統(tǒng)安全風(fēng)險(xiǎn)-本地NTLM重放提權(quán)
入侵者主要通過(guò)Potato程序攻擊擁有SYSTEM權(quán)限的端口偽造網(wǎng)絡(luò)身份認(rèn)證過(guò)程,利用NTLM重放機(jī)制騙取SYSTEM身份令牌,最終取得系統(tǒng)權(quán)限,該安全風(fēng)險(xiǎn)微軟并不認(rèn)為存在漏洞,所以2021-04-15
這篇文章主要介紹了文件上傳漏洞全面滲透分析小結(jié),這里主要為大家分享一下防御方法,需要的朋友可以參考下2021-03-21- 這篇文章主要介紹了sql手工注入語(yǔ)句&SQL手工注入大全,需要的朋友可以參考下2017-09-06
- 這篇文章主要介紹了詳解Filezilla server 提權(quán),需要的朋友可以參考下2017-05-13
FileZilla Server 2008 x64 提權(quán)與防御方法
這篇文章主要介紹了FileZilla Server 2008 x64 提權(quán)與防御方法,需要的朋友可以參考下2017-05-13https加密也被破解 HEIST攻擊從加密數(shù)據(jù)獲取明文
不久之前我們說(shuō)過(guò)關(guān)于http和https的區(qū)別,對(duì)于加密的https,我們一直認(rèn)為它是相對(duì)安全的,可今天要講的是,一種繞過(guò)HTTPS加密得到明文信息的web攻擊方式,不知道這消息對(duì)你2016-08-10iPhone和Mac也會(huì)被黑 一條iMessage密碼可能就被盜了
一直以來(lái)蘋果系統(tǒng)的安全性都是比安卓要高的,但是再安全的系統(tǒng)也免不了漏洞,蘋果也一樣。最近爆出的新漏洞,只需要接收一條多媒體信息或者iMessage就會(huì)導(dǎo)致用戶信息泄露。2016-07-27- 國(guó)家正在修正關(guān)于黑客方面的法律法規(guī),有一條震驚黑客圈的“世紀(jì)佳緣”起訴白帽黑客事件,深深的傷害了廣大黑客們的心,加上扎克伯格和特拉維斯·卡蘭尼克賬號(hào)被盜,于是黑2016-07-11
如何逆向破解HawkEye keylogger鍵盤記錄器進(jìn)入攻擊者郵箱
面對(duì)惡意郵件攻擊,我們就只能默默忍受被他攻擊,連自我保護(hù)能力都沒(méi)有談什么反抗?讓人痛快的是,如今有了解決辦法,逆向破解鍵盤記錄器,進(jìn)入攻擊者郵箱2016-07-06


