国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

◆趙少飛 楊 帆 田國敏

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

伴隨信息時代科技水平的不斷發(fā)展,云計算、大數(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ù)據(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),并檢索整個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ù)字類型時,例如頁碼、ID等,存在注入時則為數(shù)字類型的注入。這類注入方式常見于PHP和ASP等弱類型語言中,弱類型語言會自動推導(dǎo)數(shù)據(jù)類型,例如輸入的ID的值為1時,會自動推導(dǎo)出ID的數(shù)據(jù)類型為int型,當(dāng)輸入的ID的值為1 and 1=2時,會自動推導(dǎo)出ID的數(shù)據(jù)類型為string型,但JAVA或者C#這類強(qiáng)類型語言并沒有這樣的特性,int型強(qiáng)制轉(zhuǎn)換成string型時,會拋出異常,注入失敗,所以這類注入方式常見于弱類型語言中。

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

當(dāng)輸入?yún)?shù)為字符類型時,則為字符類型的注入,其與數(shù)字類型的注入的區(qū)別在于:注入時需要使用單引號來閉合。這一類的SQL語句原型大概為select*from表名where name='admin',注入時需要單引號閉合,注入的數(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ù),一般在鏈接地址中有"keyword=關(guān)鍵字",有的不顯示在的鏈接地址里面,而是直接通過搜索框表單提交。此類注入點(diǎn)提交的SQL語句,其原形大致為:select*from 表名where字段 like'%關(guān)鍵字%',若存在注入,我們可以構(gòu)造出類似與如下的sql注入語句進(jìn)行爆破:select*from 表名 where字段like'%測試%'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請求的時候會帶上客戶端的Cookie,注入點(diǎn)存在Cookie當(dāng)中的某個字段中。

(4)HTTP頭部注入

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

2.3 按照執(zhí)行效果來分類

(1)基于布爾的盲注

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

(2)基于時間的盲注

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

(3)基于報錯注入

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

3 SQL注入的過程

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

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

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

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

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

4 SQL注入如何防范

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

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

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

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

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

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

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

5 結(jié)束語

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

猜你喜歡
字段后臺語句
帶鉤或不帶鉤選擇方框批量自動換
淺談臺灣原版中文圖書的編目經(jīng)驗(yàn)
Wu Fenghua:Yueju Opera Artist
后臺暗戀
互聯(lián)網(wǎng)思維下的汽車服務(wù)連鎖后臺支撐系統(tǒng)
無正題名文獻(xiàn)著錄方法評述
無正題名文獻(xiàn)著錄方法評述
我喜歡
后臺的風(fēng)景
冠詞缺失與中介語句法損傷研究
茌平县| 蒙城县| 交口县| 三亚市| 宁南县| 濉溪县| 睢宁县| 巴林左旗| 游戏| 全南县| 嘉峪关市| 丰顺县| 秦安县| 南汇区| 仙桃市| 拉孜县| 达日县| 虎林市| 南靖县| 浙江省| 平潭县| 德化县| 文水县| 墨玉县| 水富县| 威远县| 景德镇市| 万年县| 青岛市| 兰溪市| 吉林市| 怀仁县| 韶关市| 卢湾区| 武功县| 仪征市| 三穗县| 迭部县| 达尔| 南皮县| 磴口县|