版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1章緒論1.1項目背景及意義SQL注入攻擊是一種非常有效且破壞性很大的滲透手段。它是針對于數(shù)據(jù)庫的一種攻擊手段,通過利用數(shù)據(jù)庫的外部接口把惡意代碼插入到SQL語言中使數(shù)據(jù)庫服務(wù)器解析并執(zhí)行,以達到入侵目標數(shù)據(jù)庫及至整個操作系統(tǒng)的目的。了解和熟悉SQL注入原理,掌握防御SQL注入攻擊的原理和技巧就變得至關(guān)重要。SQL注入攻擊的普遍性、難捉摸性、簡易性等特點讓其成為了網(wǎng)絡(luò)中黑客主流攻擊方式之一。因為SQL注入是從正常的Web平臺入口進行請求訪問,和請求正常的Web頁面沒有什么區(qū)別,所以目前市面上除了專門的Web防御防火墻外,大部分防火墻都不會對這類SQL注入攻擊進行監(jiān)控和發(fā)出警報,若網(wǎng)站管理員沒有經(jīng)常查看IIS日志的經(jīng)驗和習慣,有可能被入侵很長一段時間后都沒有任何發(fā)覺。由于現(xiàn)在廣泛流行的惡意攻擊工具,SQL注入在近年來呈現(xiàn)一種增長的趨勢。據(jù)OWASP(開放式web應(yīng)用程序安全項目)每隔三年更新一次的“十大安全隱患列表”,在近幾次公布的總結(jié)Web應(yīng)用程序最可能、最常見、最危險的十大安全隱患中,SQL注入攻擊一直排列靠前。OWASPTOP102023中列出的最嚴重的Web應(yīng)用程序的漏洞中,注入(Injection)風險位居第一。Web應(yīng)用的發(fā)展越來越成熟,應(yīng)用的各項技術(shù)發(fā)展得也越來越復(fù)雜。它們涵蓋了從外部動態(tài)展示INTERNET和內(nèi)部工作網(wǎng)絡(luò)到以WEB協(xié)議方式傳遞數(shù)據(jù)的企業(yè)工作應(yīng)用(如文檔管理系統(tǒng)等)。這些系統(tǒng)的實用性及其數(shù)據(jù)存儲、處理內(nèi)容的機密性和敏感性對于企業(yè)的主要業(yè)務(wù)而言都非常重要。當前市面的注入攻擊檢測工具只能對單個網(wǎng)頁或者單個URL進行檢測和注入,無法對整個網(wǎng)站的漏洞進行檢測。而漏洞掃描工具可以對整個網(wǎng)站漏洞進行掃描卻無法進行進一步的注入攻擊檢測。很大程度上不能滿足開發(fā)人員和管理人員對網(wǎng)站SQL注入漏洞全面了解的要求。本研究的最終目的是分析SQL注入攻擊的類型、關(guān)鍵技術(shù)和原理,并研究SQL注入在實際應(yīng)用中的操作方法,在此基礎(chǔ)之上,設(shè)計并開發(fā)了一套自動注入工具。因為惡意攻擊者不僅可以通過SQL注入攻擊對Web應(yīng)用數(shù)據(jù)進行盜取、篡改信息,還可以進一步對于服務(wù)器進行惡意操作,并且植入木馬或者后門程序,甚至控制整個服務(wù)器,這就嚴重影響了應(yīng)用的正常運行以及對于應(yīng)用的信息安全帶來嚴重后果。所以,對于功能齊備的SQL注入攻擊掃描與檢測工具的研究與開發(fā)具,具有非常重要的現(xiàn)實意義。應(yīng)用程序開發(fā)者或網(wǎng)站管理人員使用此工具對自已的網(wǎng)站進行安全檢測,以達到減小SQL注入的可能性。同時,在滲透測試工作中,對于安全測試也具有很大的幫助。1.2研究內(nèi)容1.2.1自動注入攻擊工具的研發(fā)本研究首先理解Web應(yīng)用的工作原理,首先簡要概述Web應(yīng)用系統(tǒng)通用的架構(gòu)模式,理解了構(gòu)建模式后能更清晰的了解SQL注入的產(chǎn)生過程,然后從Web應(yīng)用的代碼層來分析介紹是什么引起了通用的SQL注入,然后研究介紹SQL注入漏洞的利用過程。從框架到利用逐步分析SQL注入的過程和利用,然后根據(jù)分析的內(nèi)容構(gòu)建SQL注入的自動化檢測及注入攻擊利用框架。SQL注入原理SQL注入的原理,是將SQL代碼插入或者非正常時添加到應(yīng)用的參數(shù)當中,并且進行了一定的拼接傳入到了后臺的數(shù)據(jù)庫服務(wù)器,最終使服務(wù)器執(zhí)行了該拼接的惡意SQL命令。所有的是通過SQL語句執(zhí)行的應(yīng)用過程均存在被攻擊的威脅,因為SQL的多樣多變性語言結(jié)構(gòu)特征使得攻擊者可以拼接構(gòu)建豐富的代碼編碼手段等來拼接語句來欺騙服務(wù)器。SQL注入攻擊的主要方式就是直接將命令插入到應(yīng)用服務(wù)的表單參數(shù)中傳入到后臺數(shù)據(jù)庫查詢字符串中,這些參數(shù)就會被帶入到后臺數(shù)據(jù)庫服務(wù)器進行執(zhí)行解析,攻擊者便可以構(gòu)造惡意命令來達到攻擊目的。1.2.3SQL注入檢測技術(shù)檢測發(fā)現(xiàn)SQL注入漏洞有一條簡單的規(guī)則:SQL注入是通過發(fā)送特殊數(shù)據(jù)來觸發(fā)異常操作。該規(guī)則包括如下含義:檢測Web應(yīng)用上所有的輸入數(shù)據(jù);集合SQL語法,歸類所有可能觸發(fā)異常的數(shù)據(jù)類型;檢測數(shù)據(jù)庫服務(wù)器應(yīng)用響應(yīng)中的異常。首先需要清楚Web瀏覽器向Web服務(wù)器發(fā)送請求的過程。不同的服務(wù)應(yīng)用會有不同的體現(xiàn)方式,它們均處在基于Web的環(huán)境中,所以基本原理是相同的。虧識別和檢測揚應(yīng)用接受的易所有數(shù)據(jù),理攻擊一般都艱會修改這些頸數(shù)據(jù),所以暖需要識別并暢分析服務(wù)器易對它們的響卸應(yīng)。有時響莫應(yīng)中會直接頑包含來自數(shù)甚據(jù)庫的SQ惜L錯誤,有裝時需要不斷祥的方式來檢晌測和確定響間應(yīng)中細微的嚷差別。漫1.3梯章節(jié)安排鼻本論文章節(jié)浙安排如下:末第一章緒術(shù)論:綜述此質(zhì)研究設(shè)計的搜背景意義以妥及研究內(nèi)容割。茂第二章S婚QL注入技攏術(shù)研究:主買要對SQL侵注入攻擊方欣式過程和攻佳擊特點進行憶歸類、識別盲,首先理解騎Web應(yīng)用昆的工作原理壟,概述We至b應(yīng)用通用察的構(gòu)建方式其,為理解S學QL注入的亮產(chǎn)生過程提男供一些背景紀知識,接下己來從Web正應(yīng)用的代碼岸層介紹引發(fā)水SQL注入腹的因素以及胡哪些開發(fā)實篩踐和行為會言引發(fā)SQL疤注入。分析可SQL注入北過程和利用去,并架構(gòu)如輛何將SQL講注入的發(fā)現(xiàn)筋過程自動化支以提高檢測緊簡單SQL肌注入的框架的。帆第三章S子QL注入攻親擊技術(shù)研究嫂:根據(jù)SQ呢L注入技術(shù)麗,研究利用準數(shù)據(jù)庫中的貴功能來攻擊擠系統(tǒng)端口的千技術(shù)。數(shù)數(shù)牙據(jù)庫大多均凍帶有豐富的捐數(shù)據(jù)庫編程吧功能,可以紋利用SQL滿注入漏洞來嗎訪問文件系子統(tǒng)以執(zhí)行有繡效的任務(wù),努可以在基礎(chǔ)歐操作上執(zhí)行謠各種命令,陪擴大范圍攻兄擊的利用技鄰術(shù)細節(jié)。當逮發(fā)現(xiàn)SQL墓注入漏洞以牌及初步的利感用獲取數(shù)據(jù)巖后,可以利瞇用SQL注障入漏洞來訪賭問文件系統(tǒng)見來擴大滲透陣范圍。還可擴以在操作系詢統(tǒng)上執(zhí)行各咽種命令,攻火擊可以使用序它們擴展數(shù)造據(jù)庫的可達象區(qū)域并在更振大的范圍內(nèi)巴發(fā)動攻擊。斬第四章注不入高級技巧夢研究:We悟b應(yīng)用通常耕會使用過濾詳應(yīng)用,設(shè)計享這些過濾的射目的就是防衣御SQL注服入在內(nèi)的常模見攻擊。這桶些過濾方式跨可以是位于迷web應(yīng)用厘的代碼層中撕,也可以通筐過第三方的音外部實現(xiàn),苗如Web應(yīng)牛用防火墻(恩WAF)或阻入侵防御系爸統(tǒng)(IPS悉)。當注入貪攻擊碰到這呀些防御應(yīng)用看,若想進一給步利用漏洞廁,則需要尋掠找一種能避貿(mào)開過濾器防億護的高級方非法以便惡意適輸入傳遞給蝶易受攻擊的坦代碼。獎第五章自拘動注入工具皺框架設(shè)計:英根據(jù)項目的令設(shè)計需求,停以及Pyt徒hon編程棉語言的特點惑,對自動注丸入攻擊工具嫌整體框架進航行分析和設(shè)肺計。并且分邁析功能模塊袖中的重點和州關(guān)鍵技術(shù)。組第六章S搖QL注入測纖試:自動注紅入攻擊實例露測試。瓜第2章浩SQL注入筍技術(shù)舟2.1偏Web應(yīng)用須工作原理和擴架構(gòu)簡析是姨不論律是用爭何種腳本辮語言元開發(fā)賊的Web應(yīng)摸用,正都有一個共盟同點蟲:具有交互昂性并且嫂大多氣是數(shù)據(jù)庫驅(qū)并動的。舉基于狂數(shù)據(jù)庫驅(qū)動絲的Web應(yīng)似用印一般都減包含三層:燙apre糞senta煌tion莫tier姜(菌表示層爐,后Web瀏覽也器或呈現(xiàn)引榆擎)、a抱logic醋tier貢(依邏輯層著,萌如C#、A煤SP、.N閃ET、PH符P、JSP屢等編程語言汗)和as寺torag傭etie兇r亡(振存儲層榜,肌如Micr矩osoft故SQL耕Serve塞r、MyS術(shù)QL、Or贏acle等嫂數(shù)據(jù)庫)。證Web瀏覽迅器(表示層右,如Int儀ernet粘Expl草orer、毛Safar江i、Fir奪efox等論)向中間層佳(邏輯層)誠發(fā)送請求,影中間層通過味查詢、巨解析領(lǐng)數(shù)據(jù)庫(存排儲層)來響古應(yīng)該請求。襲圖2-1莫簡單的三層絲架構(gòu)擱鄭Web差三層法架構(gòu)而解決方案蠢沒有尚擴展性,研屋究人員不斷與地對是Web搞三層架構(gòu)進放行改進恩優(yōu)化挺,在可嚼維護性鍛和可黑擴展性的等基礎(chǔ)上房建立壩了一種新概灣念:n層應(yīng)衫用開發(fā)模式格。其中籃有墨一種州就是Web系四層變架構(gòu)爐解決方案,洲該方案在W課eb服務(wù)器踐和數(shù)據(jù)庫之奉間使用了一槽層中間件糟服務(wù)器劉(通常稱為轎應(yīng)用服務(wù)器垂)。下圖槍2嬌-2中,W回eb瀏覽器般(表示層)避向中間層(陡邏輯層)發(fā)悼送請求,后蕩者一次調(diào)用厘由位于應(yīng)用組層的應(yīng)用服因務(wù)器所提供終的API,爪應(yīng)用層通過卻查詢、更新越數(shù)據(jù)庫(存抱儲層)來響玻應(yīng)該請求。賤圖2-2唯四層架構(gòu)柔2.2潛識別SQL及注入擺SQL注入洪就是程序員導(dǎo)對程序中動譜態(tài)的SQL聚語句沒有作頃嚴格的過濾神或檢測,導(dǎo)充致黑客能在談注入點提交統(tǒng)非法的SQ美L語句,導(dǎo)夾致程序和服端務(wù)器的信息雄被泄漏。由泰于SQL注膛入的入門門裁檻低,隱蔽秋性好,破壞畝性大,殺毒遷軟件無法查密殺,是當前歷最主流的入盆侵手段。只SQL注入福攻擊的本質(zhì)攔,就是服務(wù)溝器將用戶傳助入的數(shù)據(jù)在數(shù)數(shù)據(jù)庫中當訴成了SQL我代碼執(zhí)行。某這里便有兩纖個關(guān)鍵因素軟:第一個是躍用戶有權(quán)限關(guān)輸入數(shù)據(jù);蕩第二個是服娃務(wù)器應(yīng)用數(shù)烏據(jù)執(zhí)行了用凍戶傳入的數(shù)什據(jù)。視嬸挎識別數(shù)據(jù)輸逃入漂Web環(huán)境摟是一種C/余S(客戶端肝/服務(wù)器)勒架構(gòu)??蛻裘投耸褂脼g覽撓器向Web攤服務(wù)器發(fā)送棒請求并等待押響應(yīng)。We寨b服務(wù)器接劫收到請求后蛾,甜通過查詢、負解析鏡數(shù)據(jù)庫巖,將響應(yīng)發(fā)廳送回客戶端匆。很明顯,成雙方便必須偽使用一種協(xié)拋議作為雙方塌的約定,這遍種傳輸協(xié)議缺就是HTT蒙P。讓首先,必須壇識別遠程W客eb應(yīng)用所德接收的所有曬數(shù)據(jù)輸入。嶄協(xié)趙議定義了可定以發(fā)送給服倦務(wù)器的操作甩方式,這里儀只關(guān)注研究著與SQL注鵲入攻擊相關(guān)億的兩種方法夫:GET和體POST。觸GET請求隸:對GET是向群服務(wù)器發(fā)索棄取數(shù)據(jù)的一甲種請求,是撿一種請求服枕務(wù)器的HT肌TP方法。據(jù)使用GET擔請求時,信桂息是顯示在鴿URL中的斑。GET請艘求對用戶是鳥透明的,如注下例,WE炸B服務(wù)器的銜GET請求拖如下所示:紐GET/牌gener您al/vo嚴te/sh棵ow/we研bst/l他ist.p歸hp?VO愁TE_ID陵=131殺/失1.1跡User-奪Agent半:Ope園ra/9.腐80(W聯(lián)indow勝sNT德6.1;叢U;Ed反ition蜻IBIS緞;zh-沿cn)P勻resto撒/2.10質(zhì).229希Versi徒on/11勞.62釘Host:習**.s甩wust.疾edu.c掉n瓜Accep域t:te折xt/ht伏ml,a張pplic依ation略/xml;龍q=0.9斤,app設(shè)licat戶ion/x鄙html+匹xml,胸image稼/png,譽imag示e/web付p,im岔age/j疊peg,爪image鹿/gif,責imag播e/x-x玻bitma旅p,*/春*;q=0拋.1狹Accep休t-Lan亡guage罷:zh-而CN,zh娛;q=0.存9,en;羽q=0.8欠Accep純t-Enc鉗oding滾:gzi薪p,de沾flate他Cooki勢e:SI銀D_414根3=82b恨90aee跳;SID沉_99=b透fb67d成86;U酒I_COO云KIE=0康;LWr校7_213舌2_ula溪stact射ivity刑=85eb賭vMTfO腰WVLvx柿gzzzV題4uv0P較kMG14攪SL7yU遍g9SVB競P%2Bz槳MNhDt獵paSVL況;PHP刺SESSI孔D=073獨edfe7次894ac贈b322b濱a1061真678e8鵝2090;鉤lzst劍at_uv此=1073事52912霧92559探57456否7|287認9946打Proxy草-Conn益ectio渣n:Ke脂ep-Al杜ive忘該請求中與形數(shù)據(jù)查詢相襪關(guān)的參數(shù)在融URL中,朵格式如下所菠示:巷list.泳php?V減OTE_I旁D=131贏上述示例中腳包含一個參弊數(shù):VOT墓E_ID。遷服務(wù)器應(yīng)用步將會把參數(shù)表值帶入數(shù)據(jù)姑庫中解析執(zhí)纏行,然后將感響應(yīng)結(jié)果返脹回給客戶端槍。令POST請搏求:陜POST請嗓求是作為H錦TTP消息重的實際內(nèi)容稈發(fā)送給we傅b服務(wù)器的世方租法。在瀏覽懶器中填寫表形單并點擊S勇ubmit誰按鈕時通常傳使用該方法心。下面的例糞子是瀏覽器銜發(fā)送給遠程追WEB服務(wù)薦器的內(nèi)容,樸請求如下所計示:拔POST睜/gene述ral/v剃ote/s廈how/w繡ebst/脅pl_wr暮ite.p諸hp?IT學EM_ID絮=345婦/觀1.1謠User-陜Agent拜:Ope枕ra/9.肌80(W晨indow挑sNT輔6.1;驅(qū)U;Ed悠ition產(chǎn)IBIS飽;zh-蓮cn)P個resto畢/2.10港.229旦Versi特on/11蜂.62這Host:搖**.s騰wust.姑edu.c永n頭Accep譯t:te述xt/ht抓ml,a技pplic投ation梨/xml;恨q=0.9罵,app開licat切ion/x即html+睬xml,旺image渾/png,竟imag柱e/web痕p,im諸age/j俊peg,搶image成/gif,乖imag爬e/x-x政bitma鍋p,*/惰*;q=0中.1忌Accep喊t-Lan跌guage謀:zh-瞧CN,zh腰;q=0.轎9,en;重q=0.8仗Accep獲t-Enc稅oding門:gzi夾p,de羽flate斃Refer傾er:h拖ttp:/粒/**.s側(cè)wust.輸edu.c店n/gen剩eral/薪vote/丙show/醋webst蚊/pl_w圈rite.額php?I落TEM_I收D=345請Cooki山e:SI護D_414上3=82b沈90aee圖;SID誘_99=b斷fb67d融86;U慕I_COO賄KIE=0授;LWr胃7_213引2_ula彼stact臺ivity復(fù)=85eb棵vMTfO閥WVLvx互gzzzV奮4uv0P章kMG14敘SL7yU呈g9SVB垮P%2Bz獎MNhDt薦paSVL濫;PHP違SESSI習D=073傷edfe7誼894ac鳳b322b著a1061漫678e8瞇2090;深lzst握at_uv纏=1073斜52912止92559術(shù)57456片7|287扭9946貨Conne燭ction局:Kee鄉(xiāng)p-Ali批ve黑Conte完nt-Le冒ngth:家40干Conte欲nt-Ty陳pe:a袋pplic旺ation亦/x-垂conte你nt=PO罩ST+TE拉ST&su膠bmit=庫+%CC%掃E1+%B她D%BB+呀其他注入數(shù)刊據(jù):厲除了GET修或POST叉參數(shù)傳輸檢紹索數(shù)據(jù)外,芬請央求的其他內(nèi)腎容也可能會背觸發(fā)SQL從注入漏洞。杜Cooki投e就是個很林典型的例子渠。Cook熱ie由服務(wù)巡器發(fā)發(fā)送到扣用戶端的瀏論覽器,并會若在用戶端每炊次請求中都辰會回發(fā)給服涉務(wù)器。Co槽okie一椒般被用于辨排別用戶身份破、進行se腳ssion自跟蹤而儲存血在用戶本地神終端上的數(shù)己據(jù)。由此可調(diào)見,用戶完陣全可以控制崗發(fā)送給服務(wù)劍器的Coo弱kie內(nèi)容趁,所以Co群okie也枯作為一種有式效的用戶數(shù)頁據(jù)輸入方式坊和易受注入么影響的對象壓。如:磨GET繁/烈1.1加Host:誕xxx.名swust件.edu.糠cn確User-餡Agent戴:Moz呼illa/產(chǎn)5.0(沉X11;箏Ubunt妹u;Li啄nuxi玉686;酸rv:19鎖.0)G荒ecko/的20230勿101F程irefo獻x/19.翅0住Accep房t:te蠶xt/ht名ml,ap汗plica柔t(yī)ion/隸xhtml玻+xml,籃appli歌catio騎n/xml印;q=0.繪9,*/*棵;q=0.身8蓋Accep震t-Lan旺guage降:en-雅US,en詠;q=0.誼5炎Accep嫁t-Enc見oding急:gzi汽p,de武flate宗Cooki傘e:__假utma=奴23550闊4861.蹤10458停63906炒.1362答72115舒8.136甩39221藝47.13遣64178醋877.1俘7;__算utmz=盾23550撒4861.融13638憲78397擔.13.3王.utmc墊sr=xx儉x.swu鋸st.ed憑u|截utmcc畝n=(re行ferra腫l)|ut洋mcmd=錫refer珍ral|u孔tmcct烈=/app勢/proc瑞ureme慈nt/bi數(shù)ds/;徐s_nr=院13641正97401累953-R門epeat棄;s_v洞num=1菌36479碎96003絲37%26爹vn%3D劍19;s盡_vi=[蔑CS]v1軍|289C膊C3EC8億51D1C重92-40捉00013久26012鴿B18C[真CE];島fsr.r點={"d"養(yǎng):90,"灣i":"d迫04601柔2-551捕64494奧-d970倒-1460院-e761勺9","e至":136躲33304癢79331吵};el車f_e=h慢ack@x左xx.sw醬ust.e務(wù)du科;elf孩_s=ab高;elf撇_h=86侍b9fa3體3b1b6蹲52a3c翁73ea8怖2f5e6嫩263be動Conne悔ction中:kee謀p-ali輸ve神該應(yīng)用系統(tǒng)瞞存在一個c賀ookie綠注入漏洞,捏漏洞代碼下犁圖2-3,惠程序代碼沒潑有任何過濾充就將用戶傳資入的coo脾kie參數(shù)鍛帶入到數(shù)據(jù)飼庫中進行執(zhí)蔬行。用戶只澇要利用抓包凡工具將傳入婆的數(shù)據(jù)包截掘下來修改c撈ookie植字段的數(shù)據(jù)煙就可以將惡表意命令傳入暴到后臺數(shù)據(jù)竄庫進行執(zhí)行要。迎圖2-3葛存在漏洞的喜代碼文件漫廈挪操作請求參峰數(shù)絡(luò)下面先通過嚼介紹一個非悅常簡單的例耍子來熟悉S貪QL注入漏沃洞。偶以我們學校蛾:妨//**.唯swust流.edu.芒cn/為例針。瀏覽到某紐頁面的UR僑L如下:丈:置//**.揭swust干.edu.判cn/ge桶neral說/vote縮/show吵/webs賣t/lis基t.php斯?VOTE妻_ID=1喇31案List.鏟php頁面殼收到一個名靈為VOTE由_ID的參災(zāi)數(shù)。挑現(xiàn)在開始開要始手動修改哄VOTE_水ID參數(shù)的倡值,將其改旁為意外的數(shù)自值。按照下柿列方式進行個首次嘗試:僑:超//**.滋swust賣.edu.勒cn/ge指neral嬸/vote糞/show鼻/webs糕t/lis勻t.php誰?VOTE烤_ID=a強ttack必er昌上例中使用斤不存在的類稻型名向服務(wù)驅(qū)器發(fā)出請求竿。服務(wù)器返悲回如下圖2耀-4響應(yīng):走圖2-4烈服務(wù)器響應(yīng)鐘結(jié)果1立該警告是當腎用戶嘗試從掛空結(jié)果集中栗讀取記錄時半,數(shù)據(jù)庫返咳回的一個M期YSQL數(shù)妨據(jù)庫錯誤。甘該錯誤表明西遠程應(yīng)用未問能正確處理松意外的數(shù)據(jù)唱。拖繼續(xù)進行推無理操作,現(xiàn)葛在向之前發(fā)恰送的值添加帳一個單引號購('),發(fā)元送下列請求闊:旅:事//**.蕩swust斗.edu.典cn/ge慣neral鄭/vote俘/show血/webs宣t/lis童t.php益?VOTE雁_ID=a菌ttack旬er'蘿下圖2-5戚是服務(wù)器的混響應(yīng):藍圖2-5蔽服務(wù)器響應(yīng)軌結(jié)果2交服務(wù)器返回癢下列錯誤:旁請聯(lián)系管理熄員獄錯誤#10項64:歪Youh議avea疲nerr嫂orin姥your俯SQL爬synta鐘x;ch烘eckt君hema目nual溉that虛corre壁spond造sto款your堅MySQL炭serv飼erve拳rsion渾for痰ther趕ight累synta堡xto雅usen轎ear'燦\''a被tlin黃e1籍SQL語句黑:SEL結(jié)ECTE哪ND_DA燒TEfr竭omVO特TE_TI群TLEw置here盟VOTE_成ID=at寸tacke攝r\'奮文件:D:塘/***r賣oot/g屯enera跨l/vot阿e/sho版w/web薦st/li扯st.ph齒p罵不難發(fā)現(xiàn),室有些應(yīng)用在而處理用戶數(shù)冊據(jù)時會返意細想不到的結(jié)歪果。WEB節(jié)檢測的異常潮并非都是由麗SQL注入嘴漏洞引起的群,還會受到交很多其他因化素的影響。金這里還可以堆通過進行另禾一個測試來篩識別SQL練Serv濱er和Or仔acle中舊的漏洞。向餡Web服務(wù)腹發(fā)送下面兩蘭個請求:饅:嘴//**.夢swust句.edu.悟cn/ge爆neral兆/vote油/show核/webs鑄t/lis役t.php廢?VOTE畫_ID=1鄰31漏:景//**.捉swust嘩.edu.頃cn/ge減neral鵝/vote榆/show晚/webs芝t/lis天t.php恭?VOTE膛_ID=1版3'+'1醉在MYSQ潔L中,與其陜等價的請求挎為:陣:小//**.禽swust襖.edu.膝cn/ge著neral屢/vote漲/show賠/webs鹽t/lis煎t.php眼?VOTE養(yǎng)_ID=1便31硬:材//**.棍swust丹.edu.鉆cn/ge柱neral度/vote鏡/show黎/webs悲t/lis肆t.php熄?VOTE悠_ID=1團3'屠'1劣如果兩個請亞求結(jié)果相同振,則很可能夠存在SQL皆注入漏洞。劫薦陰數(shù)據(jù)庫響應(yīng)疫測試SQL蹦注入攻擊漏著洞時,可能都會從WEB盾服務(wù)器收到坑不同的數(shù)據(jù)澇庫錯誤響應(yīng)箏,所以對于燦這些錯誤的刺意義需要熟碧悉和掌握。皂圖2-6展煌示了產(chǎn)生S也QL注入錯冶誤的過程和購WEB服務(wù)斯器對錯誤進京行處理得過胃程。馬圖2-6姿產(chǎn)生SQL沈注入錯誤的呀過程中的信小息流鏡產(chǎn)生SQL麗注入錯誤的坊過程中發(fā)生心了以下事件承:北用戶端發(fā)送憲請求數(shù)據(jù),呈嘗試觸發(fā)S需QL注入漏忍洞。假設(shè)用籍戶發(fā)送了一槐個帶單引號檢的值。忙WEB服務(wù)辨器接收到用括戶端的請求驗數(shù)據(jù),并向回數(shù)據(jù)庫服務(wù)肥器發(fā)送SQ瓣L查詢。本把例中,在W足EB服務(wù)器達執(zhí)行的SQ定L語句中包侮含了用戶輸蛇入?yún)?shù)并且票構(gòu)造了一條那SQL查詢俱,該查詢因囑末尾存在單驗引號而導(dǎo)致陜語法錯誤。批數(shù)據(jù)庫服務(wù)沒器接收執(zhí)行宴了格式不正噴確的SQL報查詢,并向賽WEB服務(wù)謎器返回一條暖錯誤消息。稼WEB服務(wù)磨器接收到的餡來自數(shù)據(jù)庫胖的錯誤向用沃戶發(fā)送HT蝦ML響應(yīng)。環(huán)下面列舉常紐見的SQL順錯誤。烏SQLS腫erver繪錯誤需在請求中插乞入一個單引姿號在參數(shù)中稀會產(chǎn)生數(shù)據(jù)辱庫錯誤。寨對于SQL榆Serv押er中,遠銅程應(yīng)用返回雞類似于下列糖內(nèi)容的錯誤丸,圖2-7器所示:'峽圖2-7拍SQL誰Serve為r錯誤嫁通過上面的壞例子,我們蘇可以確定運炭行在數(shù)據(jù)庫辟上的遠程S蝴QL語句與仿下面的內(nèi)容茫相似:坐SELEC法T*修FROM伴News魄WHERE認Arti母cleID游='265滅0''燭該Web應(yīng)循用未檢測單附引號,所以膏數(shù)據(jù)庫服務(wù)更器響應(yīng)返回書了一個錯誤慮。殿MYSQL勁錯誤哈下面介紹一情下典型的m啄ysql錯餃誤。MYS饑QL可以在純很多架構(gòu)和獲操作系統(tǒng)下它執(zhí)行,兼容嚇性很好,常姓見的配置是廢在裝有l(wèi)i蒸nux操作童系統(tǒng)的ap沖ache災(zāi)web服務(wù)鍛器上運行p暫hp,但它瓶也可以出現(xiàn)毅在很多其他堪場合中。鋤下列錯誤通羽常表明存在跳MYSQL杏注入漏洞:頌Warni偶ng:my器sql_f噸etch_拍array慰(1):s雨uppli筆edar你gumen園tis耐nota恥vali黨dMyS純QLre棗sult因resou除rcei叨n/va賊r/on柄line么9籮罵自動尋選找SQL注森入蘆劉對于SQL哈注入工具的溜開發(fā),如何霞的適度的自價動化SQL董注入的請求敗是其中的關(guān)源鍵。識別數(shù)惰據(jù)輸入是可刊以自動化的對內(nèi)容,它涉前及搜索WE祝B站點和尋動找GET及計POST請鏟求。數(shù)據(jù)注飲入也可以自仙動完成,因探為上一階段戰(zhàn)已經(jīng)獲取了董發(fā)送請求所愧需要的所有款數(shù)據(jù)。若想微自動尋找S陵QL注入漏魯洞,主要問溪題在于檢測召遠程服務(wù)器雄響應(yīng)中的異焰常。溉屈對于管理員螞來說,區(qū)別撿一個錯誤頁福面或其他類握型的異常頁油面非常容易蒼;但對于程昂序來說,要售識別出服務(wù)伐器異常輸出掃,有時會非德常困難。兩勝某些情況下案,應(yīng)用可以低很容易地檢燕測到數(shù)據(jù)庫桿發(fā)生了錯誤閑,如以下情暖形下:惜腰WEB應(yīng)用警服務(wù)器返回想由數(shù)據(jù)庫產(chǎn)購生的SQL艘錯誤;退寬WEB應(yīng)用冶服務(wù)器返回螺5控00內(nèi)部服宰務(wù)器無法執(zhí)老行錯誤;嬌疑某些SQL絞盲注情況下待。誼奧但對于其他效情況,應(yīng)用己系統(tǒng)將很難鮮識別存在的竿漏洞,而且怎很容易出現(xiàn)書遺漏。所以憐,自動發(fā)現(xiàn)株SQL注入舉存在著一定健的局限性,援自定義的測圈試和手動測痛試也顯得非果常重要。露2.3鐮SQL盲注減爹很多時候,估WEB服務(wù)童器為了安全恭設(shè)置關(guān)閉了床錯誤回顯,猾但是這可以賣阻擋住SQ砌L注入攻擊晶嗎?當發(fā)現(xiàn)渡一個SQL障注入點,但寶應(yīng)用只提供尾了一個自定偷義的通用的稈錯誤頁面;溝或者雖然提綠供了正常的陽頁面,但與哥期望的測試搶響應(yīng)存在一民些小的差異燦。基于這種思情況下的S鴉QL注入攻腳擊測試,都訴屬于SQL隱盲注。廊連所謂?!罢髅ぷ⑽颉笨樱褪窃谠谄W⑷牍鬢吊eb應(yīng)用時飛,攻擊語句瘦被帶入到后漲臺數(shù)據(jù)庫中煉執(zhí)行,但是盟服務(wù)器查不繳會返回錯誤毫或者執(zhí)行結(jié)曉果的回顯的胳情況下進行期的注入攻擊扣。服務(wù)器沒握有了攻擊者遞期望的錯誤腫回顯,對于醋攻擊者來說炕沒有了非常宴重要的SQ限L注入攻擊斬“鼠調(diào)試信息闊”餓,所以攻擊賠者必須找到律一個方法來架從側(cè)面驗證糟注入的SQ磚L語句是否轉(zhuǎn)得到成功執(zhí)展行。鈔馬根注入帶判定被的參數(shù)(T模iming酬Atta湊ck)握筆當已經(jīng)識別輸可能存在S隙QL注入漏太洞,但又沒圣有正常的回蟻顯的時候,透要想進一步丙確認和檢測蘭漏洞,一般魂可以提交包達含副作用的火查詢參數(shù)。貌比較老的技騰術(shù)是使用t睬iming演atta幅ck,計時刮攻擊。格2023年孝3月27日共,一個叫T予inKod做e領(lǐng)[很4倆]銀的黑客在著亡名的安全郵僵件列表Fu幕llDi禿sclos幣ure上公跳布了他入侵涉mysql鏟的塘細節(jié)。這次忘入侵事件,堤就是因為一芒個SQL盲困注漏洞引起域的。悔據(jù)黑客公布利描述,當時艦這個漏洞是星出現(xiàn)在下面系這個頁面,鋤如圖2-8兄:烏圖2-8今mysql女漏瞇洞頁面必可以看到網(wǎng)括址URL:絕index辰.html催?id=1炕170,通倉過修改參數(shù)卵id后的數(shù)銜值,服務(wù)器宜將返回不同達的查詢的客答戶信息。這纖個漏洞中,損id=這個行參數(shù)鏈接就舅是一個很隱溜蔽的衰“巡SQL盲注塞”達漏洞,攻擊譜者通過精心讓構(gòu)造id參摧數(shù)的URL策,就可以進還行SQL注構(gòu)入攻擊。利抓用通常的S府QL語句比失如命“口and1箭=2幣”宰在此鏈接下研是無法看出卸異常的,因短為應(yīng)用服務(wù)過器不會返回遲任何異常的犧數(shù)據(jù)。在這澡里,Tin滾Kode丑[邪4鞭]罩利用夕“文SQL盲注來”延的一個技巧號:Timi疫ngAt鴨tack,呼用來確認漏搜洞是否存在殿。亦在MYSQ站L數(shù)據(jù)庫中陷,有個函數(shù)滑:BENC裙HMARK丙(),可以雪用來測試函急數(shù)性能。同病時它含有兩拔個參數(shù):啦BENCH屬MARK(靠count櫻,expr芹)付函數(shù)執(zhí)行的社結(jié)果,是將蚊表達式ex嫌pr執(zhí)行c科ount次用。比如:軟mysql挽>SEL肯ECTB瘦ENCHM企ARK(1老00000販0,ENC艘ODE('雹hello吊','dl惰lk));紗+----棗-----始-----綿-----耍-----靜-----準-----駱-----濫-----蘋-----斤-----羨-----辣-----萍-----返-----儲-----濕-----請-+蓋|扇BEN停CHMAR啦K(100盜0000,旁ENCOD矩E('he螞llo',叉'dllk吊'))稻苦飽|艘|壘業(yè)繞券挎支耳泛蛾蚊宋0|陰+----勿-----期-----枕-----筒-----獎-----脅-----呀-----蹤-----艙-----就-----菠-----哨-----儉-----稻-----獨-----飲-----守-+龜1row件ins襪et(4擁.97s鞏ec)崗就將ENC渣ODE('嫌hello滾','dl單lk)執(zhí)行準了1000亦000次,牙共用4.9日7秒。穩(wěn)因此,攻擊宋者就可以利膛用MYSQ者L數(shù)據(jù)庫中膊的這個函數(shù)趴BENCH丈MARK(歷),在傳入靈到后臺服務(wù)束器的參數(shù)中瞞讓同一個S呢QL函數(shù)在虜數(shù)據(jù)庫中執(zhí)諸行若干次,控然后通過服紋務(wù)器執(zhí)行該揪SQL語句卸的時間的長昆短變化,就茄可以用來側(cè)邊面判別出S惰QL注入攻太擊語句是否頭已經(jīng)成功的兩執(zhí)行。這個掉攻擊利用技辨巧在盲注中紅被稱為Ti糞ming問Attac卷k。痛在此次my初sql.c習om的攻擊箱中,攻擊者釣接下來就是噴利用Tim夸ingA繳ttack莖攻擊。比如瞧構(gòu)造的攻擊翻參數(shù)id值擴如圖2-9做:沾圖2-9宮Timin繼gAtt漆ack攻擊從語句1究這段攻擊P歉ayloa問d首先進行革的是判斷庫御名的第一個梢字母是否為涉小寫的w,仿即CHAR基(119)撿。如果判斷資結(jié)果為真,蔽就會執(zhí)行后朋面的BEN景CHMAR撲K()函數(shù)懶,執(zhí)行該函省數(shù)就會造成慢較長的延時端;如果判斷放結(jié)果為假,霜則該攻擊語零句很快就會眉被執(zhí)行完畢披,頁面將很毒快得到加載鬼。這樣,攻巖擊者就可以違通過構(gòu)造攻府擊Payl截oad猜解章遍歷出所有夾的庫名字母慕,直到將整窯個數(shù)據(jù)庫名俊全部猜解完奸成為止,然喂后進一步可辭以猜解遍歷行出數(shù)據(jù)表明君、列明和數(shù)是據(jù)內(nèi)容,將姻可以將整個醫(yī)數(shù)據(jù)中的內(nèi)笨容下載過來垃。表同時,攻擊象者還可以通燒過以下Pa蔑yload綁獲取到更多錯有用信息,分圖2-10租:牧圖2-10偽Timi躁ngAt懂tack攻長擊語句2于此外,攻擊釣者可以通過懸利用Dum厭pFil傍e的方法如怖圖圖2-1劫1,來寫入幟一個web厲shell栽木馬:勇圖2-11極Dump志File寫傷如webs順ehll述Timin莖gAtt嬌ack是S舍QL盲注中斗的一種高級虎技巧。在各版種不同的數(shù)熱據(jù)庫中,都筆有與BEN嚇CHMAR螺K()函數(shù)掩類似的東西祥。蘋如MYSQ蓮L:BEN顧CHMAR拖K(100波0000,旅MD(1)慧)or頃SLEEP罵(5)宗Postg菊reSQL廢:PG_S采LEEP(兇5)or噸GENE根RATE_賠SERIE嶺S(1,1見00000顧0)輩MSSQ墾LSer肆ver:W澡AITFO昂RDEL燒AY'0肌:0:5'訂如,在Mi刃croso塊ftSQ掌LSer峽ver中,勤可使用如下屬SQL代碼紗來產(chǎn)生一個售8秒的暫停導(dǎo):邀WAITF疼ORDE粱LAY'慚0:0:8搏'糟同樣,對于港MYSQL全數(shù)據(jù)庫,攻歌擊者也可以想使用SLE壁EP()函展數(shù)(該函數(shù)妙適用于MY芒SQL5.糠0.12及程以后的版本葵)來進行T槽iming四Atta柜ck。齊同時,攻擊慚者還可以利天用應(yīng)用服務(wù)藍器的回顯輸盲出來進行判炮斷。例如,楚若將注入下紫面的字符串僵:帖'AND勺'1'=嗓'2炸插入到一個翼搜索字段中芬,將產(chǎn)生與惹'OR雄'1'='煩1紐不同的結(jié)果訪響應(yīng)。禁脊學Param去eter喝Split商ting本andB巨alanc腸ing技術(shù)喂如果注入帶滾判斷的函數(shù)煮不起作用,構(gòu)可以嘗試奉“式param連eter例split舅ting勸andb仔alanc尤ing狗”拿(參數(shù)拆分頑與平衡)技顫術(shù)。霸拆分是指拆滅分正常的參渾數(shù)輸入,平房衡則是指保騎證最終的查皆詢與正常的漠輸入是一致陰。其基本思燕想是:將正受常的請求參紋數(shù)進行拆分并,然后使用鼠SQL語句貧關(guān)鍵字對它拴們進行修改若,最終需保象證與原數(shù)據(jù)地不同,使得偏后臺數(shù)據(jù)庫豪服務(wù)器解析悠執(zhí)行帶入的瘋參數(shù)時,與餐正常的參數(shù)至請求一樣的右同時也帶入茅了塵“環(huán)非法漠”愛的請求?;蚶纾趆伐ttp:/縱/**.s睡wust.消edu.c降n/vie嗽w_rev首iew.p復(fù)hp?id饑=5這個U企RL中,將負id參數(shù)的精值插入到一兆條SQL語何句中構(gòu)成下遮列查詢:學SELEC雪Trev漲iew_c衫onten辱t,rev速iew_a巷uthor魄FROM娛revi碧ewsW閱HERE繩id=5姻如果使用2守+3替換5險,那么輸入陶應(yīng)用中的參棚數(shù)將不同于疫原始請求中漠的輸入,但喚SQL數(shù)據(jù)潤執(zhí)行在結(jié)果捉上是等價相陪同的:裁SELEC露Trev芝iew_c蓋onten傻t,rev處iew_a貓uthor籌FROM傭revi咐ewsW遙HERE礦id=2+傷3哈這種方式不可僅僅只局限育于數(shù)字值型爹。仙假設(shè)htt毛p://*蘋*.swu情st.ed代u/捉view_逼revie賤w.php姜?Auth虎or=dl密lk這個U釋RL返回與余某一數(shù)據(jù)庫題項目相關(guān)的御信息,我們掏將Auth戰(zhàn)or參數(shù)的亭值放到一條亮SQL查詢恥中構(gòu)成下列懇查詢:某SELEC促TCOU鏡NT(id鋸)FRO捆Mrev神iews通WHERE筐revi柔ew_ao據(jù)uthor瞇='d幸llk'瓦可以使用特去定的數(shù)據(jù)庫蜂運算符將d掉llk字符限串拆分,向事Web服務(wù)針應(yīng)用提供與帖dllk相液對應(yīng)的不同贊的參數(shù)輸入幻。對于再o顫racle沫數(shù)據(jù)庫的利世用中,可以涌使用萄“牛||展”蹄運算符來鏈土接兩個字符張串:慎SELEC我TCOU粥NT(id受)FRO命Mrev島iews勺WHERE浸revi墨ew_ao普uthor暖='d奔l'||'備lk'勾它與之前的溪第一個查詢筐在最終執(zhí)行咬的參數(shù)是等殼價的。苗下表2-1掏是帶子查詢潮占位符的拆陶分字符串參戶數(shù):革表2-1稅帶子查詢占嶄位符的拆分剖字符串好第3章曲SQL注入紀攻擊技術(shù)研肅究艱3.1犯識別數(shù)據(jù)庫示要成功進行店SQL注入番攻擊,還有臟重要的一點送就是需要探總測出服務(wù)器插正在使用的邁數(shù)據(jù)庫系統(tǒng)褲DBMS。偏若是攻擊者攻連數(shù)據(jù)庫系乘統(tǒng)都無從判元斷,就不可最能構(gòu)造出有烤效的內(nèi)“歸惡意窗”饑參數(shù)來進行悟SQL注入碧,也就無法宗實施攻擊。濤通常WEB綱架構(gòu)技術(shù)可潮以使我們猜糟測驗證出數(shù)陜據(jù)庫系統(tǒng)。您例如,AS窄P和.NE負T的WEB五服務(wù)應(yīng)用通豐常使用的事餐Micro孔soft崇SQLS猾erver紐作為數(shù)據(jù)庫鋼系統(tǒng),而P魯HP應(yīng)用則情很可能使用闖MYSQL束數(shù)據(jù)庫。如甘果是用JA逗VA、JS壽P等編寫的同,那么很有絲可能使用的杠是Orac廣le數(shù)據(jù)庫啄。味在識別SQ塑L注入漏洞鴉所存在的數(shù)姓據(jù)庫中,如硬果不是SQ彩L盲注,通孔常情況下可善以很快的判裹斷出數(shù)據(jù)庫船系統(tǒng)。如果霧數(shù)據(jù)庫響應(yīng)瓶返回出SQ觀L注入的錯些誤消息,一岡般都會在報飯錯的響應(yīng)中載可以找到是候何數(shù)據(jù)庫系預(yù)統(tǒng)的線索。漲如圖3-1殃SQL傅Serve撒r錯誤信息裝:介圖3-1遙SQLS刮erver喂錯誤信息積根據(jù)報錯信透息可以很直狗接的就判斷漆數(shù)據(jù)庫類型塑為Micr亦osoft機SQL鏈Serve窮r。牢這種方法就暖是添加一個揮單引號將使摩得構(gòu)造的S許QL語句參仇數(shù)帶入到數(shù)柜據(jù)庫服務(wù)器裕當作SQL次語句來執(zhí)行司,這將產(chǎn)生奪一條語法錯殖誤而暴露出顯錯誤信息。眼如圖3-2咬SQL秩Serve斥r錯誤信息蝴:茅:考//**.敲swust窯.edu.轎cn/ge刊neral虜/vote乓/show威/webs袖t/lis顯t.php摘?VOTE先_ID=1蓄31'禮圖3-2攀SQLS筋erver旬錯誤信息耗在錯誤消息內(nèi)中明確提到隔了干“肌MySQL趙”單,還附加了特一些關(guān)于出秘錯內(nèi)容的有再用細節(jié)。如嘴下表3-1堪返回各種D笛BMS所對均應(yīng)的查詢:威表3-1灑返回各種D材BMS所對怕應(yīng)的查詢雪例如,對于召SQLS謙erver伸2000沈SP4來斷說,執(zhí)行S敬ELECT蠻@@ver醉sion查陪詢時,將得鞏到如圖3-露3所示信息襲:漏圖3-3越SQLS享erver鞠2000德服務(wù)器返回趴信息漫如果應(yīng)用服綢務(wù)器并不能語直接的在響戴應(yīng)中返回所攀想要的數(shù)據(jù)孕信息,則需崇要一種間接喉的方法來觸愈發(fā)獲得想要度的信息。不宅同的數(shù)據(jù)庫壘,在語法查攻詢方式上有些略微的不同霞,不同的數(shù)習據(jù)庫系統(tǒng)就伴會有不同的榆查詢方式。君比如一個簡無單查詢?nèi)缦職В悍荢ELEC攔T'so脅mestr迅ing'剪該查詢語句鳥對于大多數(shù)闖主流的數(shù)據(jù)絕庫系統(tǒng)都是昨有效的,對摩于不同的數(shù)潤據(jù)庫系統(tǒng),幕將查詢的字奪符串分成兩鄭個字串的S掛QL語句的瓶時候還是存究在有細微的料差異的,就眾SQLS勻erver錦、Mysq養(yǎng)l、Ora豎cle來說擇,如下表3怠-2:詠表3-2贏字符串分成紙兩個字串的暴SQL語句乒假設(shè)Web桌應(yīng)用中沒有齡可以利用的馬SQL注入盆字符串參數(shù)莖,則可以使蠻用之前數(shù)字獎參數(shù)類似的黃技術(shù)。這樣懸的話就需要急一條針對特顛定情況特定戀技術(shù)的SQ菌L語句,使干得在服務(wù)器下經(jīng)過執(zhí)行S編QL語句后于計算后生成劈一個數(shù)字。仿在下表3-罵3所示列舉也的SQL語哭句中,在對鈴應(yīng)的數(shù)據(jù)庫芽系統(tǒng)上執(zhí)行馳對應(yīng)的SQ逢L語句后都厘會生成一個喇整數(shù),而若微在其他不同掃的數(shù)據(jù)庫下勤執(zhí)行語句的甜話,就將會條產(chǎn)生錯誤。部表3-3押從數(shù)字函數(shù)風推斷DBM截S版本黑3.2霉注入語句獲宏取數(shù)據(jù)奶UNION益語句是數(shù)據(jù)笨庫管理員經(jīng)丟常使用函數(shù)昂之一。使用督UNION旦的SQL語能句,可以連芳接兩條或多烘條SELE巷CT語句的膝聯(lián)合查詢得丟到結(jié)果。基射本語法如下姓所示:弱SELEC半Tcol福umn-1液,colu姐mn-2,巴...,c津olumn弄-NFR黎OMta跳ble-1UNION燦SELEC臨Tcol歡umn-1妙,colu蒼mn-2,盛...,c棟olumn錄-NFR請OMta中ble-2貨執(zhí)行該查詢意后,返回結(jié)窯果得到的是春由兩個SE固LECT語各句返回結(jié)果蛙組成的表。將通常在默認堪情況下,得槐到的返回結(jié)呆果中只會包族含不同的數(shù)同值。如果想爛在查詢的結(jié)炎果中將重復(fù)筒的值也顯示壟出來,只需蜘要稍微修改劈下語法即可束:競SELEC爬Tcol孝umn-1鋤,colu擦mn-2,寶...,c究olumn勻-NFR敏OMta排ble-1櫻UNION文ALL曬SELEC煤Tcol浮umn-1船,colu蓄mn-2,見...,c群olumn路-NFR岸OMta呀ble-2摧在SQL注論入測試攻擊甩中,數(shù)據(jù)庫趨的UNIO紙N查詢方法慮對于攻擊來普說作用很大饅:如果服務(wù)貍器可以正常酸返回第一個跡查詢得到的哭數(shù)據(jù),若想瓜修改加入數(shù)雞據(jù)庫UNI孩ON查詢,紫便可以利用事讀取到攻擊閑者想要讀取健的該數(shù)據(jù)庫吃用戶,然后鄰就可以訪問毯的其他的任鵲何一張數(shù)據(jù)會表。響如,如果想諷要找到li屋st.as由p頁面執(zhí)行虹的查詢的數(shù)堅據(jù)表所返回車的列數(shù),則逝可以按下列拆方式請求U含RL,直到蠟不再返回錯先誤位置信息疫:霜:典//**.婚swust網(wǎng).edu.旅cn/li信st.as騙p?Id=手12+un旗ion+s米elect溉+null團--之:爽//**.警swust惜.edu.煌cn/li袍st.as左p?Id=曾12+un樣ion+s心elect醬+null膊,null沫--豬:佩//**.治swust翻.edu.棍cn/li嗎st.as腳p?Id=遵12+un瘋ion+s筆elect扒+null音,null赤,null習--裳獲取列的另罰一種方法是褲使用ORD劑ERBY橋語句,OR類DERB界Y語句并不吼是通過注入騰另一個查詢羊語句來獲得達查詢結(jié)果。瓶通過增大O榨RDER忘BY子語耗句中代表列享的數(shù)字就可知以來識別查谷詢中的列數(shù)蘿,如下所示園:嚇:禿//**.但swust兔.edu.來cn/li濃st.as挽p?Id=磨12+or皺der+b叉y+1匠:曬//**.斧swust胳.edu.贈cn/li就st.as立p?Id=撫12+or閱der+b濫y+2耗:婦//**.矩swust谷.edu.船cn/li辭st.as貧p?Id=鹽12+or市der+b湊y+3...竹若在以上使羨用ORDE菌RBY圈9查詢時收乘到第一個錯患誤回顯,就胡意味著查詢僚的數(shù)據(jù)庫中歲包含的數(shù)據(jù)脹有8列。陡當攻擊識別遞出數(shù)據(jù)庫的帆列數(shù)后,接域下來就是選恢擇數(shù)據(jù)中的麗其中一列或俘幾列來繼續(xù)宴攻擊查詢數(shù)無據(jù)庫中的數(shù)負據(jù)了。挎因此,如果蛇攻擊者想提稿取一個數(shù)據(jù)拴庫字符串值險,就可以通漫過它來保存位正在尋找的貢數(shù)據(jù),以便狗找到一個字逮符串類型的敏列。攻擊者悼可以用NU蛋LL來很容菜易的實現(xiàn),孔只需要重復(fù)濾的使用字符薪串示例替換篩掉NULL菊即可。例如顧,如果原始書的數(shù)據(jù)查詢遭中包含4列宅數(shù)據(jù),則可叔以做如下嘗縣試獲得字符尸串類型的列題:母:退//**.紫swust近.edu.熱cn/li障st.as使p?Id=氧12+un燒ion+s富elect絲+'dll幣k',nu奮ll,nu因ll,nu術(shù)ll研:子//**.溝swust紹.edu.蛋cn/li鍛st.as艇p?Id=骨12+un獸ion+s懂elect僻+null條,'dll羊k',nu己ll,nu魔ll畢:裙//**.肺swust號.edu.瀉cn/li隊st.as搏p?Id=搜12+un頃ion+s掙elect翼+null界,null品,'dll脅k',nu遺ll鳴:糾//**.閣swust賓.edu.擇cn/li削st.as混p?Id=據(jù)12+un伯ion+s渾elect漏+null嚇,null袍,null眠,'dll矩k'域只要數(shù)據(jù)庫旁沒有返回錯昌誤,就可知舅道剛才存儲姥dllk值址的列保存的苦一個字符串里,因此就可浙以用它來顯劇示需要的值怠。例如,若環(huán)數(shù)據(jù)中第二棍列可以保存湯一個字符串讓字段,則當璃請求下面的烈URL即可詠存儲到第二泄列中:浩:香//**.浴swust腔.edu.棍cn/li宰st.as口p?Id=鹿12+un輛ion+s恰elect鍛+null北,syst塵em_us趁er,nu伍ll,nu紹ll野而下列UR醉L則可以同盜時檢索當前畏用戶名和當卸前數(shù)據(jù)庫名氏:哀:孝//**.疾swust羽.edu.掉cn/li遍st.as飛p?Id=薄12+un橋ion+s軍elect哄+null疑,syst災(zāi)em_us沈er,db顯_name訊(),nu弟ll語攻擊者通過芳精心構(gòu)造使鈴用UNIO狼NSEL廈ECT的S調(diào)QL語句注悄入,就可以睬獲取整張數(shù)脫據(jù)表。假設(shè)象攻擊者已經(jīng)嫌得到當前數(shù)錯據(jù)庫包含一郊張名為us須ers的表給,表中包含憤useri翅d、fir裝st_na鼠me、和s韻econd雞_name氏列。則可以賤使用下面的匪方式來獲取擦用戶名:截:瓜//**.匙swust研.edu.樣cn/li扯st.as邀p?Id=燙12+un輕ion+s殺elect怎+user顛id,fi普rst_n之a(chǎn)me,s完econd薯_name澡,null搭+FROM萌+user錄rs律使用UNI每ON注入任鎮(zhèn)意查詢來攻腎擊數(shù)據(jù)庫,夠是一種既快屋捷又有效的辯攻擊手段技取巧。但該方題法并不通用皮,WEB應(yīng)尼用也沒那么白容易就輕易江的泄漏數(shù)據(jù)掠庫數(shù)據(jù)。網(wǎng)在Micr運osoft戒SQL成Serve縣r中,對于冷攻擊者來說日,攻擊者最稿想了解的是子當前執(zhí)行數(shù)碌據(jù)庫查詢的潤應(yīng)用用戶是曬否是以系統(tǒng)束管理員帳戶藍(SA)運表行的。因為餅權(quán)限的不同魄,所能進行攔的查詢和操號作就不同,挑在后續(xù)的擴意大滲透中,術(shù)在數(shù)據(jù)庫上伶執(zhí)行的敏感率的提權(quán)操作昏也會有所不孟同,對于攻娘擊者的攻擊祝的程度也不祝同。為確定傾是否為SA謙權(quán)限,可以吉使用下列注纖入語句查詢簽:虛IF(s騎ystem凡_user購='s祝a')W叼AITFO值RDEL耍AY'0個:0:5'白--辭該查詢將轉(zhuǎn)填換為下列U侍RL:吼:充//**.享swust狠.edu.格cn/li暈st.as贊p?id=耍12;if峰+(sys遞tem_u拳ser=賽'sa'拾)+WAI承TFOR+炊DELAY鴉+'0:0濟:6'-紹-沖語句中的S景ystem糟_user畏在SQL惡Serve梢r中是T-瑞SQL函數(shù)饑,這個函數(shù)臟在數(shù)據(jù)庫中膛執(zhí)行完成后喘會返回數(shù)據(jù)窩為當前登錄薦的用戶名。莫該Payl筍oad的執(zhí)填行,是根據(jù)稿syste咳m_use資r函數(shù)執(zhí)行三的值來判定爐是否執(zhí)行W政AITFO食R函數(shù)(等鄰待6秒)。琴攻擊者可以銀通過Web富應(yīng)用查詢后筐返回的結(jié)果促加載HTM迷L數(shù)據(jù)所花在費的時間來尸判定是否為悶SA用戶。塑該Payl顯oad的S絮QL查詢語槽句尾部的兩遵條橫線是注褲釋作用,可躍以注釋掉所債有可能影響貫原查詢結(jié)果賭的除偽造拼遭接的SQL烏攻擊查詢代剃碼。棋上面基于時搭間的判定的恢技巧很靈活事,但是基于真時間判定的亡的方法不適巴合提取大量點信息??梢约诶没阱e妄誤的判定的躍方法,如:找:趙//**.挖swust痰.edu.杜cn/li外st.as口p?id=忠12/is扒_srvr債oleme巨mber(巖'webd波min')梳is_sr佛vrole蛇membe療r()也是溝SQLS西erver蟲中的T-S稼QL函數(shù),廢當它被執(zhí)行數(shù),可以返回舟下列值:理1:用戶屬焦于該組。粱0:用戶不之屬于該組。殲NULL:少該組不存在割。亭我們假設(shè)用桌戶屬于we待badmi僅n組,那么性URL中的聲id的參數(shù)粗應(yīng)該等于1銅2/1,因饅此,Web且應(yīng)用就會正奏常返回數(shù)據(jù)澡頁面。如果尖當前的用戶股并不是we儲badmi靜n組中的成度員,那么此臉時URL中撥的id值就翁是12/0租;這樣的話訪將會導(dǎo)致S知QL語句查濟詢失敗,W浮eb應(yīng)用返收回的結(jié)果是估一個錯誤。頭對于返回的奇錯誤來說,朋錯誤的具體踐消息內(nèi)容肯茅定會各有千犯秋:錯誤可雀能只是由W追eb服務(wù)器虹相應(yīng)錯誤返淚回的導(dǎo)‘候500i透ntern華alse張rver滲error著’伶,錯誤信息閑也有可能包素含了完整的騰SQLS點erver護錯誤消息,頌甚至由于管楊理員的限制節(jié),錯誤的信谷息是管理員姨主動設(shè)置的馬自定義的4滅04錯誤頁嘉面。止對于WAI嶺TFOR的逢基于時間的枯方法來說,偶基于錯誤來漠判定的方法對有個很大的結(jié)優(yōu)點就是效發(fā)率,基于時悅間的方法涉修及查詢延遲絹的問題,基解于錯誤的判沃定的方法的活請求可以馬勒上返回注入姻利用的結(jié)果使。當然基于悉錯誤的方法頌缺點就是將物會觸發(fā)很多皺錯誤,這些販錯誤將會被跟記入到服務(wù)步器的日志當春中,這對于鹿攻擊者來說傘是不愿意見肆到的。屯不過,可以乘稍作修改優(yōu)棍化,例:漆:巡//**.天swust依.edu.晚cn/li患st.as尚p?id=握24%2B謀(case榮+when屯+(sys狀tem_u宏ser='套sa')+查then+績1+els預(yù)e+0+e喜nd)符%2B是滋“斗+究”卷的URL編漆碼。最終將小按照下列式購子為id參疤數(shù)賦值:夢id=24卡+(c膜asew遣hen(蚊syste營m_use衛(wèi)r='株sa')曉then虧1els曠e0e棵nd)鳴如果執(zhí)行的紀不是sa,殘那么id=閘24,請求暈等價于:樂:乓//**.氧swust旦.edu.廣cn/li守st.as繩p?id=棕24背而如果執(zhí)行迎查詢的用戶港是sa,那木么id=2圍5,請求就身等價于:安:舌//**.荒swust惑.edu.種cn/li逝st.as逮p?id=炊25仆所以,攻擊湊者就可以可恨以根據(jù)We膝b服務(wù)器查釀詢后返回的助結(jié)果中加載臣的HTML乎中包含的字促符串的不同漢來判斷當前子用戶是否為板sa。究3.3食提升權(quán)限阻相所有的數(shù)據(jù)留庫系統(tǒng)管理意員都可以對枝數(shù)據(jù)庫用戶轉(zhuǎn)的權(quán)限進行珠很詳細的很輸細微的設(shè)置濤和控制。管鈴理員可以為剛每個用戶賦雁予一定量的鑒操作執(zhí)行權(quán)必限來實現(xiàn)用民戶對數(shù)據(jù)存稼儲信息的訪極問。通常一饑個數(shù)據(jù)庫系賤統(tǒng)都可能包冷含了很多個奇數(shù)據(jù)庫,但摸是攻擊者利不用的數(shù)據(jù)庫將的用戶權(quán)限獲只能訪問其縫中某一個數(shù)危據(jù)庫,在正孤常的情況下頓,其他的數(shù)巡據(jù)庫都不能宿進行任何操理作,但是攻障擊者目前掌廳控的數(shù)據(jù)庫漫中并沒有想弱要的信息。要或者是當前恩數(shù)據(jù)庫的用博戶權(quán)限可以誰讀取所有數(shù)揪據(jù)庫的內(nèi)容抽,但是只有盾對于當前數(shù)謝據(jù)庫有寫權(quán)衰限,對于其睜他數(shù)據(jù)庫不匙能執(zhí)行修改兼操作。刑攻擊者鞏若想獲取其量他數(shù)據(jù)庫的星操作或者對碑于系統(tǒng)的其摧他地方進行灣操作,就需磨要更高的權(quán)蓬限。這個過巴程就是提升觸權(quán)限。冤閉怎SQLS贈erver浙數(shù)據(jù)庫的提傅權(quán)襪在Micr似osoft平SQL韻Serve露r中,使用紫命令OPE比NROWS襪ET是一個東很好也比較皺典型的的數(shù)呆據(jù)庫攻擊方風法。OPE凈NROWS扣ET是可以航實現(xiàn)SQL坊Serv荒er對遠程誦的OLE載DB數(shù)據(jù)源鋸進行一次性掠連接,而D捆BA則可以腔用來檢索和蓬查詢遠程數(shù)悉據(jù)庫上的數(shù)怒據(jù),這樣就早可以作為連總接數(shù)據(jù)庫的母一種方法。竹下面是典型糞調(diào)用OPE絡(luò)NROWS侮ET的方法和,例:且SELEC陣T*F抹ROMO某PENRO薪WSET說('SQL賀OOLED鄰B','N聞etwor蘭k=DMS足SOCN'兩;Addr毒ess=1護92.16濤口0;uid污=dllk療;pwd=渴passw蘋ord',賽'SELE族CTco冒l(fā)umnA糧FROM存tabl姜eB')辰上述語句中樓以用戶dl式lk密碼為汽passw啟ord連接序到地址為1移92.16布陪0的SQL惜Serv件er數(shù)據(jù)庫嫌并執(zhí)行se悄lect棚colum糞nAfr架omta虜bleB查便詢,并返回茶查詢結(jié)果。船SQLS咱erver滑的OPEN鉤ROWSE悄T在SQL畝注入攻擊中恥有多種攻擊教方式和技巧娃。例如在S幼QLSe缺rver鋪2000上供,攻擊者可塑以使用OP扁ENROW噴SET來進蒼行暴力猜解搏SA密碼并懶提升權(quán)限。例如:柳SELEC悅T*F鍋ROMO雪PENRO扭WSET卻('SQL址OOLED目B','N桃etwor摸k=DMS伶SOCN'低;Addr繁ess=x鋒x.xx.尤x.x;u捉id=sa鈔;pwd=凍dllkt青est',覆'SELE坑CTA'昆)鑄若dllk欄test是紫正確的密碼戶,那么執(zhí)行晶該查詢并會樂返回結(jié)果A末;但若密碼錢不正確,那殖么將收到下勿面的返回信辨息:槽Login恢Fail燥edfo已ruse胞r'sa夜'.嫩這樣就可以盯構(gòu)造一種暴塑力猜解SA末密碼的方法娛。如果找到而正確的密碼佛,接著就可終以使用sp玉_adds保rolem務(wù)ember輔存儲過程來攤將用戶添加轟到sysa牌dmin管耕理員組,這碗樣就可以很顛容易地提升紗權(quán)限。喉命令OPE異NROWS慣ET同時也杏可以用于掃胃描SQL隸Serve誼r存在的弱叛口令,如:臣SELEC拉T*F前ROMO息PENRO毫WSET慮('SQL德OOLED殿B','N豪etwor雀k=DMS仿SOCN'韻;Addr輩ess=1滑92.16忽角1;uid控=sa;p扭wd=12刊3456'北,'SEL相ECTA柄')俗該語句查詢置嘗試以sa查帳號、密碼斑為1234烈56、地址步為192.帥168.1工.11的S角QLSe割rver發(fā)清出登錄驗證覆請求。若想淘實現(xiàn)在某一割個網(wǎng)段內(nèi)掃貫描所有IP元地址上的S縣QLSe鬧rver弱語口令就很容俯易。執(zhí)行完稅查詢語句完漿成后會將結(jié)段果保存到一毀個臨時表中這,然后可以廣使用前面提倉到的一些方揉法都可以獲乘取這些數(shù)據(jù)茂。耳拌貴Oracl冤e數(shù)據(jù)庫的朽提權(quán)橡對于Ora推cle數(shù)據(jù)頁庫,通常通債過Web應(yīng)姓用的來進行獎SQL注入誕利用提升權(quán)銹限的很困難梯。因為在O缺racle丑數(shù)據(jù)庫中,快大多數(shù)的提框權(quán)攻擊方法染都需要前提跟是PL/S醬QL注入,華而PL/S察QL這種注窄入漏洞通常灑都很少見。乓若碰到PL憲/SQL注由入漏洞,則傳可以通過注枕入PL/S很QL代碼來覆提升權(quán)限,陷以及在數(shù)據(jù)色庫服務(wù)器上沈操作系統(tǒng)命耐令。洋在非PL/酸SQL注入臺漏洞中,存信在有一個方辰法,漏洞是露出在ORA左CLE的m請od_pl團sql組件柔中。該漏洞糾的利用示例平如下URL功:搖:扔//**.內(nèi)swust新.edu.百cn/li吹st_st錢mt?Sq第lstmt哀=GRAN閃T+DBA雙+TO+P由UBLIC放攻擊者在S開QL的接口得應(yīng)用上提權(quán)北要簡單得多畏。大多數(shù)提釘權(quán)過程都是牧用的以下的原步驟:鴿首先創(chuàng)建一件DBA權(quán)限黃并授權(quán)給p譜ublic殖的Payl奇oad。然染后將Pay鏈load注蘆入存在漏洞已的PL/S采QL存儲過扁程中。Pa相yload仗如圖3-4辱所示:源圖3-4摧創(chuàng)建DBA怕權(quán)限給pu易blic勿(2)下圖毛圖3-5然旬后將該Pa焦yload駐注入到包中逆:社圖3-5姥Paylo雀ad注入傷圖3-6所差示激活啟用集DBA:令圖3-6董激活DBA勇(4)圖3唉-7所示從翻publi撒c中取消D疫BA:指圖3-7迫從publ輔ic取消D存BA煎當前ses旁sion雖細然依然有D似BA權(quán)限,耳但不再是O足RACLE屋權(quán)限設(shè)置中緊了。話使用這種攻榜擊的局限就援是前提利用熟要有CRE種ATEP禽ROCED血URE的權(quán)書限。腐歪堵獲取口令h段ash輩SQL注入躬利用要想攻拋擊得到口令穗hash,豈所以也必須陰構(gòu)造一定的葛SQL語法搞傳入數(shù)據(jù)庫宿服務(wù)器進行館查詢檢索。走一般很多W爺EB應(yīng)用也隙是將WEB凡管理員的帳羊號密碼存放及到數(shù)據(jù)庫中螺。老(1)SQ洲LSer蠟ver床如果SQL兩注入利用的釣環(huán)境是Mi索croso相ftSQ括LSer殲ver,但蕩根據(jù)數(shù)據(jù)庫勸版本的不同州,利用的方北式會差別很負大。但不管姥是那個版本晃的數(shù)據(jù)庫,瞎都得需要有耀管理員權(quán)限歪猜能訪問得裳到口令ha涉sh。枕舉例若是數(shù)當據(jù)庫為SQ捉LSer愛ver2良000,h除ash是存衡儲在mas賣ter數(shù)據(jù)徐庫的sys腫xlogi馳ns表里。劣我們可以通截過下面的語赤句進行查詢爆得到:匪SELEC浮Tnam仆e,pas筍seord噸FROM憶mast池er.db既o.Sy正sxlog辛ins倦SQLS挽erver估2000茂數(shù)據(jù)中,存氧儲的has利h是由pw葛dencr粗ypt()群這個函數(shù)生宣成的。這個閱函數(shù)并不是姻公開的,它秀會生成帶鹽逢的salt潔hash距,其中的s墨alt是一抱個和時間相最關(guān)的函數(shù)。怠(2)My森SQL爬MySQL比數(shù)據(jù)中,h充ash是存交儲在mys牛ql.us兔er表中。華如下是可以濫獲取用戶名納等的SQL卸查詢語句:拼SELEC衰Tnam扇e,pas書sword沸FROM撿mysq私l.use色r;穗MYSQL斜數(shù)據(jù)庫中的恐hash是良通過PAS沈SWORD覺()函數(shù)生駐成的,不同哭的MYSQ魄L版本函數(shù)右生成has午h的算法不磁一樣。詢(3)Or仁acle謎在Orac喪le數(shù)據(jù)庫斤中,has相h是存儲在蚊sys.u淹ser$表閃的pass倦word列殃中。其中d啦ba_us驕ers的視峽圖指向于s漁ys.us輛er$表,權(quán)但是自O(shè)r躬acle襪11g開始誘,hash屬不再出現(xiàn)在觀dba_u咳sers視獵圖中了,O價racle租的hash侄是數(shù)據(jù)加密業(yè)標準(DE較S)has畢h。sys扁.user孔$表中包含弓Oracl妨e數(shù)據(jù)庫的勺用戶以及h睡ash。代可以使用下賄列SQL查乏詢來獲得h寧ash,如珠圖3-8所念示:爽圖3-8靠SQL查詢抱獲得has努h某針對Ora叨cleD心ES角色匙hash,撓如圖3-9責所示:袋圖3-9墻查詢Ora販cleD丑ES角色h匹ash星針對Ora瑞cleS毛HA1h蠅ash(O原racle純11g以漁上),如圖姜3-10所共示:座圖3-10冬Orac嘴le11番g以上查詢栽SHA1榴hash始Oracl繼e數(shù)據(jù)庫安盲裝時附帶了埋很多其他的評默認表,這己些表中有時艷也存儲著h綢ash,有徹時甚至還包曠含明文密碼棕。很多時候棕明文通常都的是在Sys禽man.m測gmt_c孔reden俘tials蓋2表中。什3.4估文件讀寫技牛術(shù)行義MyS望QL數(shù)據(jù)庫咐的文件讀寫俗MySQL著提供了一個臥很敏感的功事能,該功能生經(jīng)常被攻擊曾者利用,該蠢功能是SQ炮L語句中可累以使用LO甚ADDA蝴TAIN猜命令來進行倘文件讀取,深可以將文件森以文本文件炭的方式讀取顯存儲到數(shù)據(jù)妥庫中。粱下面來示例賀LOAD天DATA固INFIL善E的使用方僅法。柴創(chuàng)建一個文竄本文件,名熄為user飼.txt,愈如圖3-1亮1所示:制圖3-11介user騎.txt內(nèi)徑容蠶然后在My賊SQL控制少臺下運行下粉列命令,作保用是創(chuàng)建一才張表來保存遲信息,如圖慎3-12所姨示:仍圖3-12校創(chuàng)建表遲然后使用下榨面的命令導(dǎo)梳入數(shù)據(jù)到表事中,如圖3隔-13所示育:燈圖3-13梅導(dǎo)入數(shù)據(jù)幕到表輝然后查詢剛報新建的表,攤可以看到文徹本文件已經(jīng)真導(dǎo)入到數(shù)據(jù)榨庫中,如圖圍3-14所鍋示:抬圖3-14摸表中導(dǎo)入母的數(shù)據(jù)劈MySQL標數(shù)據(jù)庫還提寄供了LOA最D_FIL底E函數(shù)來進士行文件的讀章取,該函數(shù)仁可以不用創(chuàng)型建數(shù)據(jù)表就測可以直接查耐看到結(jié)果,霉如圖3-1趨5所示:勾圖3-15仍LOAD母_FILE蓬文件讀取資攻擊者通常族利用上面的償命令函數(shù)來霞讀取應(yīng)用系純統(tǒng)的配置文結(jié)件,甚至可蓬以通過讀取正的編碼轉(zhuǎn)換姿變形等讀取初到系統(tǒng)的h蠅ash文件步。蠢對于MyS拖QL寫文草件,與在文聲章前面的說福到的MYS叢QLLO輛ADDA鋒TAIN盈FILE讀尋文件命令有孩一個相對應(yīng)旨的寫文件的篩命令吃——假slect趟into雄out)為,就可以用昏來寫文件。靈MySQL蒜的這條命令耗可以將se跟lect語體句的記過直鋒接寫入到一斧個完全可讀掙文件中,同迎時,MyS私QL的du甜mpfil鉤e允許直接盯寫入二進制詳文件。院寫文件示例默,如圖3-鳴16所示:展圖3-16桃MYSQ甜Lout獸file寫皂文件覽上述示例中趨的SQL語案句執(zhí)行后,餡會在/tm今p目錄中創(chuàng)澡建一個te呆st.tx家t文件。翅嚼SQL仁Serv庭er數(shù)據(jù)庫須的文件讀寫賀對于Mic鍋rosof桐tSQL胃Serve虎r的文件讀捐取方法,攻某擊者通常借傳用的最多的評就是BUL勒KINS男ERT語句裝。先下圖3-1趴7所示是使達用Micr村osoft公SQL雄Query溉Anal擁yzer進倆行的測試示珠例:吐圖3-17然SQLS吃erver載文件讀取測貌試近SQLS格erver懂的寫文件可榆以使用前面脫說的讀取文洗件的scr注iptin拘g(shù).的方法波來有效地向懸文件系統(tǒng)寫育文件。示例徒如圖3-1瘦8所示:名圖3-18家SQL羊Serve押r寫文件測夕試加Micro蓄soft鍋SQLS削erver移還可以從數(shù)皺據(jù)源創(chuàng)建文挑件的能力,行方法如圖3后-19所示拜:吊圖3-19動SQL擔Serve陵r創(chuàng)建文件害對于SQL悟Serv夜er的SQ妥L注入攻擊慰利用,很多傳SQL注入地工具的都是糊使用xp_磚cmdsh御ell來實醒現(xiàn)文件操作轎。利用xp篇_cmds喬hell寫杏文件最簡單廟的方法,就蛾是使用重定占向符>>來脫創(chuàng)建文本文疲件,如圖3阿-20所示茂:厘圖3-20啊SQL求Serve教r利用xp臂_cmds卸hell寫膨文件示例番淹Ora泡cle數(shù)據(jù)蒙庫的文件讀社寫丹Oracl堂e數(shù)據(jù)庫提踏供了很多與鹿系統(tǒng)底層的慨交互,有很乞多種方法底廉層系統(tǒng)操作寬讀取文件的編方法,但是紅其中大多數(shù)勺方法都是基秀于PL/S董QL代碼才植能夠運行。寫Oracl礎(chǔ)e中通過三供種不同的接稿口來訪問文釘件:狗Utl_f商iel_d回ir/Or攔acle懇direc卸torie盒sJava喜Oracl悲eTex旅t小在默認情況戒下,非特殊魔權(quán)限的用戶蘆是沒有權(quán)限州在操作系統(tǒng)閃層讀寫文件蓬的。歲Oracl骨e數(shù)據(jù)中攻霞擊者讀文件軌最常用的是犁使用utl鼓_和Ora坊cled高irect桂ories直這兩種方法叉。使用ut典l_可以讓休Oracl喪e數(shù)據(jù)庫在臉系統(tǒng)中指定斑一個目錄,劫數(shù)據(jù)庫的用暫戶都可以在若指定的該目疼錄中進行文揉件讀寫。若煙設(shè)置utl鄭_的值為*借,則用數(shù)據(jù)賤庫寫文件的榆操作就沒有珠了目錄限制寄。讓下表3-4泰所示列舉的慨就是使用u狐tl_d懶irect渣ories蛙的方法基于糧Oracl線e數(shù)據(jù)庫來諸讀取文件的市情景:不表3-4誠Oracl暈e數(shù)據(jù)庫u河tl_d狡irect陡ories井的方法讀文失件新下面提供的濫就是一個O蹄racle陵讀取文件的俗示例,示例慕中利用PL臟/SQL代轟碼讀取了位嗎于MEDI嶄A_DIR潔目錄下的一委個文本文件般rds.t扇xt,讀取運了其中的1蠻000個字縮節(jié)。如下圖疤3-21所仍示賞圖3-21揀Orac撤le讀取文混件rds.裹txt降萌自O(shè)rac捧le9i繭Rel.研2開始,O各racle蘇數(shù)據(jù)庫提供墳了從外部表憤讀文件的功乒能。Ora胸cles數(shù)括據(jù)庫可以使鎮(zhèn)用SQL*停Loade加r或Ora按cleD唯atapu央mp從一定絡(luò)結(jié)構(gòu)的文件曠中讀取到文誓件。洲下面的示例蛾是針對于從音外部表讀取旬文件的代碼胃,如圖3-扮22所示:翼圖3-22晚從外部表逃讀取文件別在Orac朗le數(shù)據(jù)庫理中,除了使死用utl_將、Orac輸ledi削recto懇ry這兩種航方法外,還貝可以使用J伴ava程序御來進行文件汽的讀寫??墒疽栽贛ac詢roIv詞aldis止的Web站航點上找到該埋方法的示例譯代碼,網(wǎng)址甩為:賭除以上方法洪外,還有一心種是利用O蟲racle樓Text獵,這是一種河比較少見的察讀取文件的各技術(shù)。它需巡要將想讀取仁的文件插入左到一張表中春,然后創(chuàng)建撿一個全文索頌引或者等待妥索引創(chuàng)建成災(zāi)功的過程狀臨態(tài)下即可。放下面示例代巖碼就是利用浙Oracl虛eTex鏈t方法將b原oot.i浮ni插入到定一張表中,膠用以來讀取色該文件,如司圖3-23剩所示:蠟籍圖3-23陳Orac丈leTe航xt方法將率boot.幣ini插入裝到一張表中師對于Ora搏cle數(shù)據(jù)屠庫寫文件,莖與讀文件一戴樣,同樣提筑供了很多從拉底層操作系鍋統(tǒng)創(chuàng)建文件糧的方法,可脂使用Utl拆_、外部表料、Java葉、操作系統(tǒng)專命令和重定頃向等方法來禁進行文件的柏寫入操作。謝從Orac服le9i季以后,使用胳utl_f避ile方法醒可以在文件肆系統(tǒng)上寫入窄二進制文件證。甩其中,DB叨MS_AD磚VISOR允基本是創(chuàng)建態(tài)文件最快捷測的方式,下宿面的示例創(chuàng)此建一個dl勵lk.tx翼t的文件,嶺內(nèi)容為dl邊lkte斯st:依Crea魔tedi梳recto木ryEX叢Tas戴'C\'衰EXEC籃SYS.杜DBMS_冒ADVIS藝OR.CR荒EATE_雨FILE苗('d桌llkt守est'.節(jié)'EXT擊','dl欣lk.tx惰t')穗從Orac草le10辦g以后,可關(guān)以使用外部捕表創(chuàng)建一個謹包含用戶名徹和密碼的文形件,如圖3睛-24所示兩:繡圖3-24陰從外部創(chuàng)訂建包含用戶兔名和密碼的檢文件唱可以在牽Macro費Ival攀di的We貍b站點上找沃到Java撞的示例代碼隨:京3.5多執(zhí)行系統(tǒng)命反令善執(zhí)鑒行系統(tǒng)命令勝根據(jù)數(shù)據(jù)庫遲來操作分別跑有以下幾種殿方式:藍MySQL草執(zhí)行系統(tǒng)命賤令福MySQL碎數(shù)據(jù)庫本身矛并不支持執(zhí)翠行shel婚l命令。但貧大多數(shù)情況宰下,若MY狹SQL數(shù)據(jù)仙庫服務(wù)器和伙WEB服務(wù)份器沒有分離插,是位于同兄一服務(wù)器上壁時,這樣攻曉擊者可以先池使用占“夢selec朗tint百oDUM室PFILE踐”偵的方法在服業(yè)務(wù)器上寫上籮一個web董shell農(nóng),然后通過駕websh悲ell來對頸操作系統(tǒng)進簡行控制執(zhí)行奴命令。鑒SQLS泰erver喪執(zhí)行系統(tǒng)命唉令賊在Micr頁osoft裁SQL摸Serve依r中,可以誼利用xp_逢cmdsh惱ell的方裁法來直接執(zhí)喘行所要執(zhí)行觀的命令。如竿下圖3-2湯5所示:釣圖3-25追xp_c嚴m(xù)dshe掀ll執(zhí)行命組令嗎SQLS秘erver吧在默認情況勵下,是禁止單對組件癥“織xp_cm獄dshel朱l吹”腰以及涌“梨sys.x種p_cmd炮shell杠”紡的訪問的,決同時,此組郊件通常也在菜管理員進行微服務(wù)器安全臘配置時被關(guān)冬閉。但是系掌統(tǒng)管理員還熄是可以通過醬使用sp_盆confi黎gure的避方法來啟用習“鍋xp_cm搭dshel辛l諒”銜,這
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋出售代理人合同(2篇)
- 2024音響設(shè)備展會展覽策劃及組織服務(wù)合同3篇
- 2024石材加工廠安全生產(chǎn)與風險管理的合同范本
- 二零二五版農(nóng)產(chǎn)品市場調(diào)研與營銷策劃合同4篇
- 2025年度婚紗攝影情侶寫真拍攝服務(wù)合同2篇
- 2025年版智慧社區(qū)門衛(wèi)及智能安防系統(tǒng)運營合同4篇
- 二零二五年度面粉質(zhì)量檢測與認證合同4篇
- 二零二五年度土地租賃抵押借款合同范本
- 2025年度土地儲備開發(fā)合同范本3篇
- 2025版新能源行業(yè)農(nóng)民工勞動合同示范文本3篇
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計規(guī)范-PDF解密
- 冷庫制冷負荷計算表
- 肩袖損傷護理查房
- 設(shè)備運維管理安全規(guī)范標準
- 辦文辦會辦事實務(wù)課件
- 大學宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 申請使用物業(yè)專項維修資金征求業(yè)主意見表
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
評論
0/150
提交評論