怎樣查明sql注入漏洞

今天小編給大家分享的是怎樣查明sql注入漏洞的方法介紹,相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說(shuō),一起往下看吧。

創(chuàng)新互聯(lián)專注于網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營(yíng)銷(xiāo)中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

個(gè)人整理:

1.注入字符串?dāng)?shù)據(jù)

    步驟:

        a.提交一個(gè)單引號(hào)作為目標(biāo)查詢的數(shù)據(jù),觀察是否會(huì)造成錯(cuò)誤,或結(jié)果是否與原來(lái)結(jié)果不同。

        b.如果發(fā)現(xiàn)錯(cuò)誤或其他異常行為,同時(shí)提交兩個(gè)單引號(hào),看會(huì)出現(xiàn)什么情況。數(shù)據(jù)庫(kù)使用兩個(gè)單引號(hào)作為轉(zhuǎn)義序列,表示一個(gè)原因單引號(hào),因此這個(gè)序列解釋成引用字符串中的數(shù)據(jù),而不是結(jié)束字符串的終止符。如果這個(gè)輸入導(dǎo)致錯(cuò)誤或異常行為小時(shí),則應(yīng)用程序可能易于收到sql注入***

        c.為進(jìn)一步核實(shí)漏洞,可以使用sql連接符建立一個(gè)等同于“良性”輸入的字符串,如果應(yīng)用程序以與處理對(duì)應(yīng)“良性”輸入相同的方式處理專門(mén)設(shè)計(jì)的輸入,那么可能易受到***。

            每種數(shù)據(jù)庫(kù)連接方式各不相同,如:

                oracle: '||'FOO

                ms-sql:  '+'FOO

                MySQL: ' 'FOO 引號(hào)之間存在空格


2.注入數(shù)字?jǐn)?shù)據(jù):

    如果sql查詢合并用戶提交的數(shù)字?jǐn)?shù)據(jù),應(yīng)用程序仍然會(huì)將它包含在單引號(hào)之中,作為字符串?dāng)?shù)據(jù)進(jìn)行處理,可以按照上面字符串的測(cè)試步驟處理。有時(shí)候會(huì)直接將數(shù)字?jǐn)?shù)據(jù)傳送到數(shù)據(jù)庫(kù)中,并不放在單引號(hào)中,使用上面方法無(wú)法檢測(cè)到漏洞,可以按照下面測(cè)試步驟。

    步驟:

        a.嘗試輸入一個(gè)結(jié)果等于原始數(shù)字值的簡(jiǎn)單數(shù)學(xué)表達(dá)式。如,如果原始值是2,可以嘗試提交1+1或3-1,如果有相同相應(yīng),則表明易受到***。

        b.如果證實(shí)被修改的數(shù)據(jù)會(huì)對(duì)應(yīng)用程序造成明顯影響,則前面描述的測(cè)試方式最為可靠。但是,如果能夠在數(shù)字化參數(shù)中插入任意輸入,但程序行為沒(méi)有發(fā)生改變,前面的檢查方法就無(wú)法發(fā)現(xiàn)漏洞。

        c.如果第一個(gè)測(cè)試方法取得成功,可以利用更加復(fù)雜、使用特殊sql關(guān)鍵字和語(yǔ)法的表達(dá)式進(jìn)一步獲得與漏洞有關(guān) 的證據(jù)。ASCII命令就是一個(gè)典型的實(shí)例,它返回被提交字符的數(shù)字化ASCII代碼,。例如,A的ASCII值是65,在sql中,以下表達(dá)式等于2:

            67-ASCII('A')

        d.如果單引號(hào)被過(guò)濾掉,那么前面的測(cè)試方法就沒(méi)有用。但是,這時(shí)可以利用這樣一個(gè)事實(shí):即在必要時(shí),數(shù)據(jù)庫(kù)會(huì)隱含的將數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)化成字符串?dāng)?shù)據(jù)。例如,因?yàn)樽址?1 的ASCII值為49,在sql語(yǔ)句中,以下表達(dá)式等于2:

             51-ASCII(1)

    

    特別注意:

      在查探應(yīng)用程序是否 存在sql注入類缺陷時(shí),我們常常會(huì)犯一個(gè)錯(cuò)誤,即忘記某些字符在http請(qǐng)求中具有特殊含義。如果希望在***有效載荷中插入這些字符,必須謹(jǐn)慎的對(duì)他們進(jìn)行url編碼,確保應(yīng)用程序按照預(yù)料的方式解釋他們,特別是以下字符:

       - &和=用于連接名/值對(duì),建立查詢字符串和post數(shù)據(jù)塊。應(yīng)當(dāng)分別使用%26和%3d對(duì)他們進(jìn)行編碼。

       - 查詢字符串中不允許使用空格,如果在其中提交空格,整個(gè)字符串會(huì)立即終止。必須使用 + 或 %20 對(duì)其編碼。

       - 由于 + 用于編碼空格,如果想在字符串中使用 + ,必須使用 %2b 對(duì)其編碼。因此,前面的數(shù)字化實(shí)例中,1+1應(yīng)以 1%2b1 的形式提交。

       - 分號(hào)用于分隔cookie字段,必須使用 %3b對(duì)其編碼。

    無(wú)論是通過(guò)哦攔截代碼服務(wù)器直接從瀏覽器中編輯參數(shù)值,或是使用其他方法進(jìn)行編輯,都必須使用這些編碼方法。如果沒(méi)有對(duì)相關(guān)字符進(jìn)行編碼,那么整個(gè)請(qǐng)求可能會(huì)無(wú)效,或提交預(yù)期之外的數(shù)據(jù)。


3.注入查詢結(jié)構(gòu):

    如果用戶提交的數(shù)據(jù)被插入sql查詢結(jié)構(gòu),而不是查詢中的數(shù)據(jù)項(xiàng),這時(shí)實(shí)施sql注入***只需要直接應(yīng)用有效的sql語(yǔ)法,而不需要進(jìn)行任何“轉(zhuǎn)義”。

    sql查詢結(jié)構(gòu)中最常用的注入點(diǎn)是 order by子句。   

    步驟:

        a.記下任何可能控制應(yīng)用程序返回的結(jié)果的順序或其中的字段類型的參數(shù)。

        b.提供一系列在參數(shù)值中提交數(shù)字值的請(qǐng)求,從數(shù)字 1 開(kāi)始,然后逐個(gè)請(qǐng)求遞增。

            - 如果更改輸入中的數(shù)字會(huì)影響結(jié)果的順序,則說(shuō)明輸入可能被插入到order by子句中。

            - 如果提交輸入 1 生成一組結(jié)果,其中一個(gè)列每一行都包含一個(gè) 1 ,則說(shuō)明輸入要可能被插入到查詢返回的列的名稱中,如:

                SELECT 1,title,year from books where publisher='wilery'

        注解:

        在order by子句中實(shí)施sql注入與其他注入情形有很大區(qū)別,此時(shí),數(shù)據(jù)中不會(huì)接受查詢中的union、where、or、and關(guān)鍵字。通常實(shí)施注入***需要***者指定一個(gè)嵌套查詢來(lái)替代參數(shù),如用(SELECT 1 WHREE<<condition>> or  1/0=0)替代列名稱。

看完上訴內(nèi)容,你們對(duì)查明sql注入漏洞大概了解了嗎?如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

分享文章:怎樣查明sql注入漏洞
文章路徑:http://www.muchs.cn/article26/ihpicg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、Google、云服務(wù)器、網(wǎng)站導(dǎo)航、動(dòng)態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名