freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

自動(dòng)注入攻擊工具的研發(fā)-資料下載頁(yè)

2025-06-22 07:12本頁(yè)面
  

【正文】 些正常的數(shù)據(jù)請(qǐng)求,然后再在后面帶入SQL注入的攻擊參數(shù),因?yàn)楹芏噙^(guò)濾系統(tǒng)在對(duì)于提交的數(shù)據(jù)數(shù)據(jù)超出某個(gè)長(zhǎng)度以后,將不能有效的進(jìn)行過(guò)濾判斷。 二階SQL注入對(duì)于前面所提到的SQL注入攻擊,都是屬于常規(guī)性的。前面提到的SQL注入在單個(gè)HTTP請(qǐng)求和響應(yīng)中的流程如下所示:(1) 攻擊者HTTP請(qǐng)求中插入了精心構(gòu)造的參數(shù);(2) 應(yīng)用服務(wù)器處理輸入的參數(shù),參數(shù)經(jīng)過(guò)了拼接導(dǎo)致SQL查詢(xún)被執(zhí)行;(3) 應(yīng)用服務(wù)器有可能會(huì)對(duì)攻擊者請(qǐng)求的參數(shù)返回輸出結(jié)果。而這里提到另外一種高級(jí)的注入手法就是二階SQL注入。這種攻擊事情的過(guò)程如下所示:(1) 攻擊者HTTP請(qǐng)求中插入了精心構(gòu)造的參數(shù);(2) 應(yīng)用服務(wù)器存儲(chǔ)該輸入的參數(shù)準(zhǔn)備處理;(3) 攻擊者進(jìn)行第二次HTTP請(qǐng)求,同時(shí)插入了精心構(gòu)造的參數(shù);(4) 應(yīng)用服務(wù)器將處理第二次請(qǐng)求,應(yīng)用服務(wù)器將會(huì)檢索已存儲(chǔ)的參數(shù)并處理,因此導(dǎo)致了SQL查詢(xún)被執(zhí)行;(5) 應(yīng)用服務(wù)器有可能會(huì)對(duì)第二次請(qǐng)求的參數(shù)響應(yīng)返回輸出結(jié)果。二階SQL注入屬于一種更細(xì)微的漏洞,通常更難被檢查到。下面舉例說(shuō)明,假設(shè)一個(gè)通訊簿的應(yīng)用,在應(yīng)用系統(tǒng)中,用戶(hù)可以保存朋友的聯(lián)系信息。用戶(hù)在創(chuàng)建一個(gè)聯(lián)系人時(shí),用戶(hù)可以輸入姓名、Email和地址等信息。應(yīng)用系統(tǒng)使用INSERT語(yǔ)句為該聯(lián)系人創(chuàng)建新的數(shù)據(jù)庫(kù)記錄,并將輸入中的引號(hào)雙重編碼以防止SQL注入攻擊。流程圖如圖41所示:圖41 通訊簿的添加記錄流程圖而當(dāng)用戶(hù)修改已存在的聯(lián)系人時(shí),應(yīng)用系統(tǒng)將會(huì)先使用SELECT檢索該聯(lián)系人的信息,并保存到內(nèi)存中;然后使用用戶(hù)提供的新信息更新相關(guān)數(shù)據(jù),并在此對(duì)該輸入中的引號(hào)進(jìn)行重新編碼,而用戶(hù)沒(méi)有更新的數(shù)據(jù)項(xiàng)將在內(nèi)存中將保持不變;最后使用UPDATE語(yǔ)句將內(nèi)存中的數(shù)據(jù)回寫(xiě)到數(shù)據(jù)中。這個(gè)過(guò)程的流程圖如圖42所示如下:圖42 通訊薄應(yīng)用更新數(shù)據(jù)流程圖假設(shè)上例中引號(hào)雙重編碼可以有效的防止常規(guī)的SQL注入。但是,這樣的情況下應(yīng)用系統(tǒng)仍然易受到二階SQL注入攻擊。若攻擊者想利用該漏洞,首先需要使用某個(gè)字段中的攻擊payload創(chuàng)建一個(gè)聯(lián)系人。現(xiàn)假設(shè)數(shù)據(jù)庫(kù)系統(tǒng)是Microsoft SQL Server,使用下列語(yǔ)句創(chuàng)建一個(gè)聯(lián)系人。a39。+@version+39。a輸入中的引號(hào)被雙重編碼,最終INSERT語(yǔ)句會(huì)如下所示:INSERT INTO webContacts VALUES (39。a39。39。+@@version+39。39。a39。,39。dllk@39。,...)聯(lián)系人的姓名安全的保存到數(shù)據(jù)庫(kù)中了。接下來(lái)更新創(chuàng)建聯(lián)系人,只需要提供一個(gè)新值即可。應(yīng)用首先檢索已存在聯(lián)系人的信息:SELECT * RROM webUsers where contactid=123檢索出來(lái)的信息保存在內(nèi)存中。應(yīng)用系統(tǒng)使用新提供的數(shù)據(jù)值替換內(nèi)存中的值,并將引號(hào)雙重編碼。然后執(zhí)行UPDATE語(yǔ)句,將信息保存到數(shù)據(jù)庫(kù)中:UPDATE webUsersSET name=39。a39。+@@version+39。a39。,address=39。mianyang swust39。,...WHERE contactid = 123到上面這個(gè)語(yǔ)句后,攻擊以成功執(zhí)行并修改了應(yīng)用的查詢(xún)。當(dāng)查看更新過(guò)的聯(lián)系人的細(xì)節(jié)信息時(shí),顯示出來(lái)的是:Name:aMicrosoft SQL Server ....Copyright (c)....(Build 2600: )aAddress:mianyang swust通訊薄應(yīng)用系統(tǒng)成功的執(zhí)行了攻擊者構(gòu)造的SQL語(yǔ)句,這就證明該應(yīng)用存在SQL注入攻擊漏洞,并且可被攻擊利用。 混合攻擊混合攻擊就是指使用多種攻擊技巧來(lái)對(duì)應(yīng)用服務(wù)器進(jìn)行攻擊,同時(shí)也可以就SQL注入漏洞與其他漏洞或者技術(shù)相結(jié)合起來(lái)來(lái)進(jìn)行應(yīng)用服務(wù)器攻擊。如,在有時(shí),可以利用SQL注入漏洞和和其他不同的漏洞或bug進(jìn)行結(jié)合,如跨站腳本(XSS)漏洞。若進(jìn)行SQL注入利用攻擊的時(shí)候,應(yīng)用服務(wù)器并沒(méi)有給出返回的輸出回顯,可以利用該漏洞與反射XSS漏洞相結(jié)合來(lái)側(cè)面判斷SQL注入攻擊是否成功執(zhí)行來(lái)當(dāng)成返回回顯。在不同的數(shù)據(jù)庫(kù)類(lèi)型和版本中,還有很多各自可利用的小bug和漏洞可以與SQL注入進(jìn)行結(jié)合。 第5章 自動(dòng)注入攻擊工具框架設(shè)計(jì) 設(shè)計(jì)需求項(xiàng)目的需求是軟件設(shè)計(jì)和實(shí)現(xiàn)的最根本需求依據(jù)。根據(jù)SQL注入漏洞的利用過(guò)程,據(jù)分析的內(nèi)容構(gòu)建SQL注入的自動(dòng)化檢測(cè)及注入攻擊利用框架。根據(jù)SQL注入攻擊的過(guò)程設(shè)計(jì)開(kāi)發(fā)一個(gè)SQL注入攻擊程序,實(shí)現(xiàn)以下功能:(1) 能夠自動(dòng)掃描識(shí)別兩種以上類(lèi)型的SQL注入攻擊;(2) 能夠利用SQL注入漏洞,進(jìn)行數(shù)據(jù)庫(kù)攻擊,如猜測(cè)帳號(hào)、口令等;(3) 至少具有對(duì)四種類(lèi)型的數(shù)據(jù)庫(kù)進(jìn)行進(jìn)行攻擊檢測(cè),能夠?qū)?shù)據(jù)庫(kù)的結(jié)構(gòu)信息進(jìn)行猜解,能對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)操作;(4) 能夠利用SQL注入執(zhí)行系統(tǒng)命令,能對(duì)有一定權(quán)限的目標(biāo)進(jìn)行文件操作和提權(quán)操作;(5) 能一定程度上自定義注入攻擊以繞過(guò)簡(jiǎn)單防注入機(jī)制。 自動(dòng)注入攻擊工具框架總體設(shè)計(jì)通過(guò)對(duì)Python程序編寫(xiě)的學(xué)習(xí)和研究,軟件分成三個(gè)主體部分:自動(dòng)抓取目標(biāo)Web網(wǎng)站鏈接;檢測(cè)是否存在SQL注入漏洞;進(jìn)行SQL注入攻擊。自動(dòng)注入攻擊工具框架總體架構(gòu)圖如圖51所示:圖51 自動(dòng)注入攻擊工具框架總體架構(gòu)圖 關(guān)鍵技術(shù)需要識(shí)別Web應(yīng)用程序是否具有SQL注入漏洞,首先必須得要找出目標(biāo)Web應(yīng)用程序的網(wǎng)站鏈接,并且識(shí)別該鏈接是否為可控制輸入數(shù)據(jù)。只有有了這個(gè)基礎(chǔ),才有可能是產(chǎn)生可控的數(shù)據(jù)交互。然后通過(guò)遍歷發(fā)送HTTP請(qǐng)求以及特殊數(shù)據(jù)來(lái)觸發(fā)和進(jìn)一步驗(yàn)證,通過(guò)服務(wù)器處理發(fā)送的數(shù)據(jù)所產(chǎn)生的反應(yīng)來(lái)一步步的判斷SQL注入。對(duì)于識(shí)別和抓取目標(biāo)Web系統(tǒng)的鏈接,設(shè)計(jì)有兩條思路,一為通過(guò)Web爬蟲(chóng)實(shí)現(xiàn)對(duì)于Web系統(tǒng)進(jìn)行鏈接爬行和抓取,然后判斷是否存在SQL注入;一為通過(guò)搜索引擎收錄的目標(biāo)Web鏈接,將之抓取過(guò)來(lái)進(jìn)行注入分析。 網(wǎng)絡(luò)爬蟲(chóng)技術(shù)Python內(nèi)置的很多模塊對(duì)于網(wǎng)頁(yè)爬取都有很大的作用,無(wú)需再借助Web瀏覽器或者服務(wù)器就能處理HTML文檔。使用lib, urlparse, urllib2庫(kù)用來(lái)爬取鏈接、數(shù)據(jù)、圖像、Cookie等都非常便利。若想對(duì)于目標(biāo)進(jìn)行鏈接爬取,首先需要解析URL,通過(guò)Python的urlparse模塊可以很輕松的分解URL并重新組裝。關(guān)鍵代碼如圖52所示:圖52 python使用urlparse解析URL當(dāng)解析了URL鏈接后,更重要的是分析頁(yè)面的內(nèi)容,因?yàn)轫?yè)面中的內(nèi)容有可能還包含著該Web網(wǎng)站的其他鏈接,這樣通過(guò)一層層的爬取,就能將Web站點(diǎn)中的頁(yè)面基本爬取完畢。Python中的HTMLParser模塊能夠根據(jù)HTML文檔中的標(biāo)簽來(lái)快捷、簡(jiǎn)便地解析HTML文檔,這對(duì)網(wǎng)頁(yè)內(nèi)鏈接的抓取就顯得易如反掌。先定義一個(gè)HTMLParser的新的類(lèi),使用覆蓋handle_starttag()的方法來(lái)顯示所有鏈接中的href標(biāo)簽屬性,然后創(chuàng)建好一個(gè)實(shí)例用來(lái)返回HTMLParser的對(duì)象,這樣,(url)打開(kāi)并讀取HTML文檔中的內(nèi)容了。對(duì)于HTML文件中包含的鏈接內(nèi)容,可以使用read()函數(shù)讀取將數(shù)據(jù)傳遞給HTMLParser對(duì)象,HTMLParser的feed函數(shù)可以接收到數(shù)據(jù),這樣就可以抓取到頁(yè)面內(nèi)的鏈接了。同時(shí)Chilkat Python Module是一個(gè)很強(qiáng)大的商業(yè)版Python工具開(kāi)發(fā)包,Chilkat可以處理網(wǎng)絡(luò)、加密、壓縮解壓縮、XML等等內(nèi)容。關(guān)鍵代碼如圖53所示:圖53 爬蟲(chóng)抓取鏈接判斷SQL注入 利用谷歌抓取鏈接利用爬蟲(chóng)技術(shù)來(lái)對(duì)Web目標(biāo)的鏈接進(jìn)行抓取確實(shí)不失為一個(gè)好方法,但很多時(shí)候,由于服務(wù)器安全設(shè)置或者是防火墻的設(shè)置,并不允許同一臺(tái)服務(wù)器的與目標(biāo)服務(wù)器建立大量的連接請(qǐng)求。很多時(shí)候網(wǎng)絡(luò)爬蟲(chóng)的效率和效果并不是很好。這時(shí)就可以利用搜索引擎搜索的關(guān)鍵字來(lái)定位與目標(biāo)相關(guān)的Web鏈接,然后直接將抓取的鏈接進(jìn)行SQL注入檢測(cè)。核心代碼如圖54所示:圖54 抓取谷歌收錄的Web鏈接 識(shí)別服務(wù)器響應(yīng)信息當(dāng)在測(cè)試SQL注入漏洞時(shí),發(fā)送給目標(biāo)Web服務(wù)器一些非法或者意外的字符后,需要根據(jù)服務(wù)器返回的信息來(lái)判斷是否存在SQL注入漏洞或者是SQL注入攻擊是否成功執(zhí)行。這就需要識(shí)別服務(wù)器響應(yīng)的信息。需要對(duì)于頁(yè)面中的內(nèi)容進(jìn)行識(shí)別。對(duì)于SQL注入頁(yè)面判斷來(lái)說(shuō),常規(guī)的注入,基于錯(cuò)誤的頁(yè)面可以通過(guò)判定訪問(wèn)的正常頁(yè)面與返回的頁(yè)面進(jìn)行比較。首先記錄正常頁(yè)面的信息,然后發(fā)送非法請(qǐng)求后再次記錄返回的頁(yè)面信息,通過(guò)分析出產(chǎn)生錯(cuò)誤的頁(yè)面中數(shù)據(jù)的不同來(lái)確定頁(yè)面是否有誤。如正常頁(yè)面中網(wǎng)頁(yè)包含字符“true”,通過(guò)SQL注入測(cè)試請(qǐng)求后返回的爆錯(cuò)頁(yè)面中并不會(huì)存在字符“true”,這樣就可以通過(guò)分析定義關(guān)鍵字“true”來(lái)判斷測(cè)試是否成功。而這其中關(guān)鍵的地方就在于怎樣讓程序來(lái)識(shí)別頁(yè)面內(nèi)容中的信息。同樣在Python中,可以使用HTMLParser模塊,使用覆蓋handle_data()的方法來(lái)解析文本數(shù)據(jù)。關(guān)鍵代碼如圖55所示:圖55 python解析文本數(shù)據(jù)在對(duì)于一些服務(wù)器的返回爆錯(cuò)信息中,可以直接通過(guò)識(shí)別服務(wù)器上的每一個(gè)HTTP響應(yīng)對(duì)象中的respose包含的數(shù)字“狀態(tài)碼”。對(duì)于服務(wù)器的error,urlopen會(huì)產(chǎn)生一個(gè)error。典型的錯(cuò)誤包含“404”(頁(yè)面無(wú)法找到),“403”(禁止請(qǐng)求),和“401”(需驗(yàn)證)。 提取Cookie信息使用Python從頁(yè)面中提取cookies信息,可以使用cookielib模塊中的LWPCookieJar()函數(shù)創(chuàng)建一個(gè)cookie jar來(lái)實(shí)現(xiàn)。LWPCookieJar()函數(shù)可以返回一個(gè)從硬盤(pán)加載和存儲(chǔ)的Cookie的對(duì)象。然后使用urllib2模塊的build_opener([handler, . . .])函數(shù)創(chuàng)建opener對(duì)象來(lái)處理cookies。然后使用urlopen(Request)函數(shù)來(lái)打開(kāi)HTML文件,HTML文件中的Cookie就會(huì)被存放在LWPCookieJar對(duì)象中,之后,使用save(filename)函數(shù)就獲取到Cookie了。利用爬蟲(chóng)技術(shù)來(lái)對(duì)Web目標(biāo)的鏈接進(jìn)行抓取確實(shí)不失為一個(gè)好方法,但很多時(shí)候,由于服務(wù)器安全設(shè)置或者是防火墻的設(shè)置,并不允許同一臺(tái)服務(wù)器的與目標(biāo)服務(wù)器建立大量的連接請(qǐng)求。很多時(shí)候網(wǎng)絡(luò)爬蟲(chóng)的效率和效果并不是很好。核心代碼如下圖56所示:圖56 Python提取Cookie信息 SQL注入工具模塊實(shí)現(xiàn)這里以Mysql數(shù)據(jù)庫(kù)為示例。檢測(cè)流程如下圖57所示:圖57 SQL注入檢測(cè)流程存活測(cè)試,通過(guò)發(fā)送數(shù)據(jù)包GET或POST的方式根據(jù)服務(wù)器的響應(yīng)來(lái)判斷目標(biāo)Web是否存活。對(duì)于網(wǎng)頁(yè)的穩(wěn)定性測(cè)試,因?yàn)橹挥袆?dòng)態(tài)的網(wǎng)頁(yè)才會(huì)有數(shù)據(jù)的交互,對(duì)于純粹的html頁(yè)面是沒(méi)有直接的數(shù)據(jù)庫(kù)交互的,所有可以通過(guò)多次訪問(wèn)來(lái)確定服務(wù)器響應(yīng)的網(wǎng)頁(yè)的md5值是否完全匹配。也可以直接通過(guò)尋找關(guān)鍵字來(lái)確定是否是動(dòng)態(tài)網(wǎng)頁(yè)。通過(guò)GET/POST方式請(qǐng)求來(lái)發(fā)送非法或者意外的數(shù)據(jù)請(qǐng)求來(lái)進(jìn)行SQL注入攻擊檢測(cè)。數(shù)據(jù)庫(kù)指紋識(shí)別,通過(guò)提交注入?yún)?shù)使得應(yīng)用服務(wù)器返回版本信息,然后通過(guò)抓取網(wǎng)頁(yè)中的內(nèi)容信息來(lái)獲取數(shù)據(jù)庫(kù)指紋。同時(shí)不同的數(shù)據(jù)庫(kù)提交的注入?yún)?shù)不同,通過(guò)返回的數(shù)據(jù)版本信息特征碼來(lái)區(qū)分?jǐn)?shù)據(jù)庫(kù)版本。數(shù)據(jù)庫(kù)指紋識(shí)別核心代碼如下圖58所示:圖58 數(shù)據(jù)庫(kù)指紋識(shí)別代碼SQL注入攻擊模塊,使用Python的urllib, urllib2, cookielib庫(kù)的模塊發(fā)送GET/POST請(qǐng)求對(duì)于注入功能語(yǔ)句進(jìn)行遍歷訪問(wèn)。如下圖59為POST請(qǐng)求發(fā)送數(shù)據(jù)代碼示例:圖59 POST請(qǐng)求發(fā)送數(shù)據(jù)示例下圖510為SQL注入利用代碼示例:圖510 SQL注入利用代碼示例圖511為MYSQL注入攻擊利用LOADFILE讀取文件操作代碼示例:圖511 利用LOADFILE讀取文件示例第6章 SQL注入測(cè)試 測(cè)試原則為保證測(cè)試過(guò)程的規(guī)范、安全、可靠,并且測(cè)試需是經(jīng)過(guò)授權(quán)且一般在不影響應(yīng)用正常運(yùn)行的情況下運(yùn)行,參與測(cè)試的人員均應(yīng)遵守以下規(guī)則:(1)在測(cè)試過(guò)程中中,對(duì)測(cè)試行為、測(cè)試時(shí)間、測(cè)試地點(diǎn)均進(jìn)行了約束。嚴(yán)禁任何人擅自嘗試測(cè)試方案中未規(guī)定的危險(xiǎn)操作。(2)對(duì)測(cè)試過(guò)程必須進(jìn)行詳細(xì)記錄,便于日后查驗(yàn)。(3)測(cè)試中,任何人發(fā)現(xiàn)的任何漏洞都必須上報(bào)并記錄,嚴(yán)禁發(fā)現(xiàn)漏洞后隱瞞,嚴(yán)禁利用測(cè)試中發(fā)現(xiàn)的漏洞進(jìn)行非法活動(dòng)或謀取私利。(4)所有參測(cè)人員必須嚴(yán)謹(jǐn)、細(xì)致地進(jìn)行測(cè)試,并盡全力避免引起網(wǎng)絡(luò)阻塞或服務(wù)器死機(jī)等嚴(yán)重問(wèn)題。 測(cè)試部分結(jié)果軟件SQL Injection界面如下圖61所示:圖61 軟件界面圖輸入有SQL注入的URL頁(yè)面,如圖62所示:圖62 輸入具有SQL注入的頁(yè)面在基本設(shè)置里可以先點(diǎn)擊選擇參數(shù),參數(shù)控制界面如下圖63所示,可以選擇列舉出數(shù)據(jù)庫(kù)類(lèi)型、操作系統(tǒng)、測(cè)試參數(shù),同時(shí)用戶(hù)也可以根據(jù)測(cè)試情況進(jìn)一步自定義限制這些參數(shù)以達(dá)到更好的測(cè)試效果:圖63 參數(shù)控制界面設(shè)置POST方式、數(shù)據(jù)操作等,界面如下圖65所示,用戶(hù)可以設(shè)置枚舉當(dāng)前用戶(hù)、密碼、表段、字段、數(shù)據(jù)結(jié)構(gòu)等,也可自定義指定數(shù)據(jù)庫(kù)名指定表名來(lái)進(jìn)行效果更好的檢測(cè):圖65 數(shù)據(jù)操作界面如,當(dāng)前測(cè)試的URL生成的命令是,測(cè)試結(jié)果如圖6圖67所示: u ://**.***.asp?ArticleID=279 randomagent dbms=access currentuser currentdb tables columns v 2圖66 列舉數(shù)據(jù)庫(kù)表段結(jié)果圖67 注入測(cè)試結(jié)果參數(shù)可以在界面上實(shí)時(shí)看到得到的注入攻擊結(jié)果,同時(shí)結(jié)果保存在output文件夾下,結(jié)果如下圖68所示:圖68 保存的檢測(cè)結(jié)果同時(shí),也可以通過(guò)歷史記錄,直接查看所獲取的信息,如下圖69所示:圖69 SQL注入測(cè)試歷史記錄信息結(jié) 論通過(guò)幾
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1