PHP下ereg實現匹配ip的正則

2021-07-28 21:22:29 字數 490 閱讀 2047

我們先看個**片段: 

**如下:

$ip = "1.1.1.255".chr(0)."haha";  

if(ereg("^[0-9]\.[0-9]\.[0-9]\.[0-9]$",$ip))  else  

這個ereg正則限制了$ip的資料為***.***.***.***這樣的形式,表面上看上面的**應該輸出"unknown",而實際卻輸出了"1.1.1.255haha",因為ereg函式存在null截斷漏洞,導致了正則過濾被繞過。4 \2 n+ y6 |; z7 o 

6 e& b6 c5 f- w- f$ z我們在利用時必須要引入\x00(%00),而在gpc為on的情況下%00會被轉義導致無法利用。但是如果被ereg()處理的是$ _server(在php5下可以繞過gpc)或是被urldecode這樣的函式處理導致gpc被繞過的資料呢?比如有些程式就用上面的方法驗證$ _server提交上來的ip,那麼我們就可以利用null截斷繞過正則過濾來構造我們需要的資料了:)

PHP下ereg實現匹配ip的正則

我們先看個 片段 複製 如下 ip 1.1.1.255 chr 0 haha if ereg 0 9 0 9 0 9 0 9 ip else 這個ereg正則限制了 ip的資料為 這樣的形式,表面上看上面的 應該輸出 unknown 而實際卻輸出了 1.1.1.255haha 因為ereg函式存在n...

PHP下ereg實現匹配ip的正則

我們先看個 片段 複製 如下 ip 1.1.1.255 chr 0 haha nbswww.cppcns.comp if ereg 0 9 0 9 0 9 0 9 ip else 這個ereg正則限制了 ip的資料為 這樣的形式,表面上看上面的 應該輸出 unknown 而實際卻輸出了 1.1.1....

php中ereg函式的截斷漏洞

ereg 函式用指定的模式搜尋乙個字串中指定的字串,如果匹配成功返回 true,否則,則返回false 搜尋字母的字元是大小寫敏感的。int ereg string pattern,string originalstring,array regs 例,email id admin tutorials...