PHP下ereg實現(xiàn)匹配ip的正則
更新時間:2007年11月08日 22:04:54 作者:
我們先看個代碼片段:
$ip = "1.1.1.255".chr(0)."haha";
if(ereg("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$",$ip)) {
echo $ip;
} else {
echo "unknown";
}
這個ereg正則限制了$ip的數(shù)據(jù)為xxx.xxx.xxx.xxx這樣的形式,表面上看上面的代碼應(yīng)該輸出"unknown",而實際卻輸出了"1.1.1.255haha",因為ereg函數(shù)存在NULL截斷漏洞,導(dǎo)致了正則過濾被繞過。4 \2 n+ Y6 |; Z7 O
6 e& b6 C5 F- W- F$ z我們在利用時必須要引入\x00(%00),而在GPC為ON的情況下%00會被轉(zhuǎn)義導(dǎo)致無法利用。但是如果被ereg()處理的是$ _SERVER(在PHP5下可以繞過GPC)或是被urldecode這樣的函數(shù)處理導(dǎo)致GPC被繞過的數(shù)據(jù)呢?比如有些程序就用上面的方法驗證$ _SERVER提交上來的IP,那么我們就可以利用NULL截斷繞過正則過濾來構(gòu)造我們需要的數(shù)據(jù)了:)
復(fù)制代碼 代碼如下:
$ip = "1.1.1.255".chr(0)."haha";
if(ereg("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$",$ip)) {
echo $ip;
} else {
echo "unknown";
}
6 e& b6 C5 F- W- F$ z我們在利用時必須要引入\x00(%00),而在GPC為ON的情況下%00會被轉(zhuǎn)義導(dǎo)致無法利用。但是如果被ereg()處理的是$ _SERVER(在PHP5下可以繞過GPC)或是被urldecode這樣的函數(shù)處理導(dǎo)致GPC被繞過的數(shù)據(jù)呢?比如有些程序就用上面的方法驗證$ _SERVER提交上來的IP,那么我們就可以利用NULL截斷繞過正則過濾來構(gòu)造我們需要的數(shù)據(jù)了:)
相關(guān)文章
55分鐘學(xué)會正則表達(dá)式(來自Github)
正則表達(dá)式是一種查找以及字符串替換操作。正則表達(dá)式在文本編輯器中廣泛使用,比如正則表達(dá)式被用于文本的一些操作,這里雖然說時間有點短,但經(jīng)過一段時期的聯(lián)系,每次正則可能功能更全,代碼量也更好,考慮的也會更周全2020-04-04
Hive中常用正則表達(dá)式的運(yùn)用小結(jié)
在實際的應(yīng)用中,通常需要在一些復(fù)雜的、沒有規(guī)律的字符串中提取數(shù)據(jù),這時候就需要用到正則表達(dá)式了,這次講一下hive的正則表達(dá)式,感興趣的朋友跟隨小編一起看看吧2022-08-08
js正則表達(dá)式之input屬性($_)RegExp對象屬性介紹
該屬性為RegExp的靜態(tài)只讀屬性,該屬性的值為與RegExp對象所描述的正則表達(dá)式進(jìn)行匹配檢測的字符串,該屬性也可以表示成$_2012-10-10

