• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于網(wǎng)站系統(tǒng)的SQL注入解析

      2019-12-23 15:57:10趙少飛田國敏
      關(guān)鍵詞:字段后臺(tái)語句

      ◆趙少飛 楊 帆 田國敏

      (陜西省網(wǎng)絡(luò)與信息安全測(cè)評(píng)中心 陜西 710065)

      伴隨信息時(shí)代科技水平的不斷發(fā)展,云計(jì)算、大數(shù)據(jù)等技術(shù)應(yīng)運(yùn)而生,B/S模式的應(yīng)用系統(tǒng)在不同領(lǐng)域得到廣泛應(yīng)用,使用這種模式編寫應(yīng)用程序的程序員也越來越多。但是由于程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。越來越多的惡意攻擊者利用應(yīng)用程序存在的隱患肆意攻擊應(yīng)用程序,使應(yīng)用系統(tǒng)的安全受到了嚴(yán)重的威脅。其中,最致命的攻擊之一就是SQL注入。

      1 何為SQL注入

      SQL注入(SQL Injection)是Web應(yīng)用程序面臨的一種注入攻擊,可以執(zhí)行惡意SQL語句。它通過將任意SQL代碼插入數(shù)據(jù)庫查詢,使攻擊者能夠完全控制Web應(yīng)用程序后面的數(shù)據(jù)庫服務(wù)器。攻擊者可以使用SQL注入漏洞繞過應(yīng)用程序安全措施;可以繞過網(wǎng)頁或Web應(yīng)用程序的身份驗(yàn)證和授權(quán),并檢索整個(gè)SQL數(shù)據(jù)庫的內(nèi)容;還可以使用SQL注入來添加、修改和刪除數(shù)據(jù)庫中的記錄。

      2 SQL注入分類

      由于SQL注入一般發(fā)生在B/S結(jié)構(gòu)的應(yīng)用程序上,而這些應(yīng)用程序大部分屬于互聯(lián)網(wǎng)上的web站點(diǎn),因此依據(jù)SQL注入形成的原因,將SQL注入進(jìn)行以下分類。

      2.1 按照注入點(diǎn)類型來分類

      (1)數(shù)字型注入點(diǎn)

      當(dāng)輸入?yún)?shù)為數(shù)字類型時(shí),例如頁碼、ID等,存在注入時(shí)則為數(shù)字類型的注入。這類注入方式常見于PHP和ASP等弱類型語言中,弱類型語言會(huì)自動(dòng)推導(dǎo)數(shù)據(jù)類型,例如輸入的ID的值為1時(shí),會(huì)自動(dòng)推導(dǎo)出ID的數(shù)據(jù)類型為int型,當(dāng)輸入的ID的值為1 and 1=2時(shí),會(huì)自動(dòng)推導(dǎo)出ID的數(shù)據(jù)類型為string型,但JAVA或者C#這類強(qiáng)類型語言并沒有這樣的特性,int型強(qiáng)制轉(zhuǎn)換成string型時(shí),會(huì)拋出異常,注入失敗,所以這類注入方式常見于弱類型語言中。

      (2)字符型注入點(diǎn)

      當(dāng)輸入?yún)?shù)為字符類型時(shí),則為字符類型的注入,其與數(shù)字類型的注入的區(qū)別在于:注入時(shí)需要使用單引號(hào)來閉合。這一類的SQL語句原型大概為select*from表名where name='admin',注入時(shí)需要單引號(hào)閉合,注入的數(shù)據(jù)應(yīng)為admin’and 1=1--,合并為sql則為select*from user where name=‘a(chǎn)dmin’and 1=1–‘。

      (3)搜索型注入點(diǎn)

      這是一類特殊的注入類型。這類注入主要是指在進(jìn)行數(shù)據(jù)搜索時(shí)沒過濾搜索參數(shù),一般在鏈接地址中有"keyword=關(guān)鍵字",有的不顯示在的鏈接地址里面,而是直接通過搜索框表單提交。此類注入點(diǎn)提交的SQL語句,其原形大致為:select*from 表名where字段 like'%關(guān)鍵字%',若存在注入,我們可以構(gòu)造出類似與如下的sql注入語句進(jìn)行爆破:select*from 表名 where字段like'%測(cè)試%'and'%1%'='%1%'。

      2.2 按照數(shù)據(jù)提交的方式來分類

      (1)GET注入

      提交數(shù)據(jù)的方式是GET,注入點(diǎn)的位置在GET參數(shù)部分。

      (2)POST注入

      使用POST方式提交數(shù)據(jù),注入點(diǎn)位置在POST數(shù)據(jù)部分,常發(fā)生在表單中。

      (3)Cookie注入

      HTTP請(qǐng)求的時(shí)候會(huì)帶上客戶端的Cookie,注入點(diǎn)存在Cookie當(dāng)中的某個(gè)字段中。

      (4)HTTP頭部注入

      注入點(diǎn)在HTTP請(qǐng)求頭部的某個(gè)字段中。例如存在User-Agent字段中。

      2.3 按照?qǐng)?zhí)行效果來分類

      (1)基于布爾的盲注

      即可以根據(jù)返回頁面判斷條件真假的注入。

      (2)基于時(shí)間的盲注

      即不能根據(jù)頁面返回內(nèi)容判斷任何信息,而是用條件語句查看時(shí)間延遲語句是否執(zhí)行(即頁面返回時(shí)間是否增加)來判斷。

      (3)基于報(bào)錯(cuò)注入

      即頁面會(huì)返回錯(cuò)誤信息,或者把注入的語句的結(jié)果直接返回在頁面中。

      3 SQL注入的過程

      SQL注入利用的是正常HTTP服務(wù)端口,表面上看和正常的HTTP訪問沒有任何區(qū)別,隱蔽性強(qiáng)。

      第一步:判斷web站點(diǎn)是否可以進(jìn)行SQL注入,如果web站點(diǎn)的URL只對(duì)網(wǎng)頁進(jìn)行訪問,是不存在SQL注入的可能,只有對(duì)數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)查詢的URL才會(huì)存在SQL注入的可能,例如http://www.xxx.com/test.php?id=1,其中id=1表示會(huì)對(duì)數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)查詢,存在SQL注入可能性。

      第二步:尋找注入點(diǎn),構(gòu)造SQL注入語句。判斷出web站點(diǎn)可以進(jìn)行SQL注入后,就需要尋找站點(diǎn)可利用的注入漏洞,通過輸入一些特殊字符,查看瀏覽器返回的數(shù)據(jù),判斷數(shù)據(jù)庫類型,進(jìn)一步構(gòu)造數(shù)據(jù)庫查詢語句找到注入點(diǎn)。

      第三步:猜測(cè)數(shù)據(jù)庫表名、用戶名和密碼。數(shù)據(jù)庫中的表名、字段名都有一定的規(guī)律,通過構(gòu)造特殊的數(shù)據(jù)查詢語句,利用SQL注入工具依次查找數(shù)據(jù)庫名、表名、字段名、用戶名和密碼長度。一般查詢的密碼都進(jìn)行MD5加密,需要借助解密工具對(duì)MD5密碼進(jìn)行解密,就可以得到用戶名和密碼。

      第四步:尋找web站點(diǎn)的管理后臺(tái)。利用站點(diǎn)目錄掃描工具或后臺(tái)掃描工具對(duì)web站點(diǎn)進(jìn)行掃描,查找出web后臺(tái)的登錄路徑,并依次進(jìn)行嘗試,找到web站點(diǎn)的后臺(tái)入口地址。

      第五步:入侵和破壞。成功登錄后臺(tái)管理后,可以進(jìn)行篡改網(wǎng)頁、上傳木馬、修改用戶信息等操作,也可以進(jìn)一步入侵?jǐn)?shù)據(jù)庫服務(wù)器。

      4 SQL注入如何防范

      SQL注入的基本原理就是在網(wǎng)站頁面提交欺騙性的數(shù)據(jù),用于欺騙網(wǎng)站后臺(tái)構(gòu)造的非法SQL語句并執(zhí)行。明晰SQL注入的原理,針對(duì)SQL注入提出一些措施進(jìn)行防范。

      4.1 對(duì)用戶輸入網(wǎng)頁的數(shù)據(jù)通過正則表達(dá)式進(jìn)行校驗(yàn)

      對(duì)用戶輸入網(wǎng)頁的數(shù)據(jù)進(jìn)行正則表達(dá)式校驗(yàn),包括對(duì)單引號(hào)和雙"-"進(jìn)行轉(zhuǎn)換,進(jìn)而校驗(yàn)輸入數(shù)據(jù)中是否包含SQL語句的保留字,如:where,when,drop等。對(duì)用戶輸入數(shù)據(jù)進(jìn)行嚴(yán)格限制,可以有效防范SQL注入攻擊。

      4.2 對(duì)用戶輸入數(shù)據(jù)進(jìn)行參數(shù)化存儲(chǔ)

      SQL注入之所以能成功的原因是從數(shù)據(jù)庫中取出的數(shù)據(jù)以及用戶輸入的數(shù)據(jù)均是字符型數(shù)據(jù),這些字符型數(shù)據(jù)與SQL語句混合在一起且沒有明確的界限,從而使DBMS在執(zhí)行相應(yīng)SQL語句時(shí)誤將數(shù)據(jù)中的部分字符作為SQL關(guān)鍵字執(zhí)行,改變了預(yù)期SQL語句的執(zhí)行邏輯。如果將存入數(shù)據(jù)庫中的數(shù)據(jù)統(tǒng)一采用參數(shù)化進(jìn)行存儲(chǔ),當(dāng)用戶試圖在URL中嵌入惡意的SQL語句時(shí),參數(shù)化存儲(chǔ)過程已經(jīng)幫用戶校驗(yàn)出傳遞給數(shù)據(jù)庫的變量不是整型,而且使用存儲(chǔ)過程的好處是我們還可以很方便地控制用戶權(quán)限,我們可以給用戶分配只讀或可讀寫權(quán)限。

      4.3 采用云檢測(cè)技術(shù)對(duì)網(wǎng)站輸入的SQL攻擊進(jìn)行檢測(cè)

      鑒于如今許多網(wǎng)站進(jìn)行集約化平臺(tái)部署,針對(duì)網(wǎng)站的SQL注入攻擊行為,可以采用云檢測(cè)技術(shù),對(duì)用戶輸入網(wǎng)站的數(shù)據(jù)進(jìn)行靜態(tài)和動(dòng)態(tài)檢測(cè),并通過智能化匹配漏洞庫信息,定期檢查并發(fā)現(xiàn)應(yīng)用程序中的SQL注入漏洞,并加以攔截阻斷。

      5 結(jié)束語

      本文闡述了SQL注入的概念,分別按注入點(diǎn)類型、數(shù)據(jù)提交方式、執(zhí)行效果等三方面對(duì)SQL注入進(jìn)行分類說明,通過對(duì)SQL注入的過程進(jìn)行描述,提出SQL注入防御的具體措施。在云計(jì)算、大數(shù)據(jù)技術(shù)不斷深入發(fā)展的今天,SQL注入作為web應(yīng)用的一種典型攻擊方式,也伴隨著新技術(shù)、新應(yīng)用有著新的變化,如何應(yīng)對(duì)SQL注入不斷變化的攻擊方式,需要我們深入了解其原理,以不變應(yīng)萬變。

      猜你喜歡
      字段后臺(tái)語句
      圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
      重點(diǎn):語句銜接
      后臺(tái)暗戀
      精彩語句
      前臺(tái)、后臺(tái)精彩花絮停不了
      CNMARC304字段和314字段責(zé)任附注方式解析
      無正題名文獻(xiàn)著錄方法評(píng)述
      如何搞定語句銜接題
      電力調(diào)度中后臺(tái)監(jiān)控系統(tǒng)的應(yīng)用
      河南科技(2014年11期)2014-02-27 14:10:03
      關(guān)于CNMARC的3--字段改革的必要性與可行性研究
      南昌县| 大厂| 伊吾县| 屯留县| 云龙县| 南靖县| 乐至县| 怀化市| 衡水市| 东光县| 育儿| 利津县| 长治县| 通道| 溆浦县| 垣曲县| 海阳市| 阿坝县| 庆云县| 内丘县| 丹江口市| 弥渡县| 新乡市| 馆陶县| 大连市| 阆中市| 萨迦县| 福海县| 阿拉善右旗| 高淳县| 博野县| 昌江| 萝北县| 长葛市| 中山市| 合山市| 郯城县| 上饶县| 莱芜市| 城口县| 文登市|