PHP下ereg实现匹配ip的正则_正则表达式

我们先看个代码片段:

复制代码 代码如下:

$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的数据为xxx.xxx.xxx.xxx这样的形式,表面上看上面的代码应该输出"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截断绕过正则过滤来构造我们需要的数据了:)

时间: 2024-09-06 14:58:32

PHP下ereg实现匹配ip的正则_正则表达式的相关文章

PHP下ereg实现匹配ip的正则

我们先看个代码片段: 复制代码 代码如下: $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的数据为xxx.xxx.xxx.xxx这

JS:一个匹配日期的正则_正则表达式

(1[0-2]|0?[1-9])[-./](0?[1-9]|[12][0-9]|3[01])[-./](\d\d\d\d)  $1 匹配 10,11,12,01,02,03,04,05,06,07,08,09 也是匹配 月份  $2 匹配 01,02...09,10,11....29,30,31 也就是匹配 日期  $3 匹配 0000,0001....9999 也就是匹配 年份  加上 中间的字符集合  以下都会匹配  10/10/1999  10-10-1999  10.10.1999

javascript下一个还原html代码的正则_正则表达式

今天看到蓝色有人 问这个问题,偶就试着写了一个,感觉正则的replace+function方式挺方便简洁,代码如下: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

[asp]匹配网址的正则_正则表达式

复制代码 代码如下: Function IsValidUrl(str)   Dim regEx   Set regEx = New RegExp   regEx.Pattern = "http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?"   IsValidUrl = regEx.Test(str)  End Function 

JavaScript中的正则表达式使用及验证qq号码的正则_正则表达式

废话不多说了,直接给大家贴正则表达式代码了. function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. var receiveName = $("#receiveName").val();//姓名 var receiveMobile = $("#tMobile").val();//手机号 var validCode = $("#validCode").

javascript下正则匹配百分比的代码_正则表达式

<script language="javascript">     var re = /^-?\d+%$/;     alert(re.test('50%'));     alert(re.test('-25%'));     alert(re.test('3a5%')); </script>

Java/Js下使用正则表达式匹配嵌套Html标签_正则表达式

通用 HTML 标签区配正则 最近看网站日志,发现有人在博客上转了我不知道几年前写的一个匹配 HTML 标签的正则,刚好最近也在做一些相关的事情,顿时来了兴趣.就拿回来改改,成了下面这样,可能会有一些 case 遗漏,欢迎修改,已知在内嵌 <script> 复杂内容的处理能力较弱,不过对纯 HTML 来说已经够用,拿来做一些分析工具还是不错滴. 复制代码 代码如下: <script type="text/javascript"> var str = "

asp下替换非数字为空的正则_正则表达式

function replacestr(str) dim re set re=new regexp re.ignorecase=true re.global=true re.pattern="\D" str=re.replace(str,"") replacestr=str set re=nothing end function

实用正则表达式匹配和替换大全_正则表达式

正则表达式非常有用,查找.匹配.处理字符串.替换和转换字符串,输入输出等.而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScript等各种脚本语言都支持正则表达式.下面整理一些常用的正则表达式. 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "