PHP下ereg实现匹配ip的正则
2009-10-21 22:21
218 查看
$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截断绕过正则过滤来构造我们需要的数据了:)
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截断绕过正则过滤来构造我们需要的数据了:)
相关文章推荐
- PHP下ereg实现匹配ip的正则
- PHP下ereg实现匹配ip的正则
- PHP下ereg实现匹配ip的正则
- PHP下ereg实现匹配ip的正则
- PHP下ereg实现匹配ip的正则
- PHP下ereg实现匹配ip的正则
- 正则匹配密码只能是数字和字母组合字符串功能【php与js实现】
- 正则表达式匹配完整img标签php实现
- 浅析PHP正则表达式匹配的实现
- 正则表达式匹配完整img标签php实现
- PHP之preg_replace()与ereg_replace()正则匹配比较讲解
- PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
- PHP实现正则匹配所有括号中的内容
- PHP简单实现正则匹配省市区的方法
- 探讨PHP ereg()函数与正则表达式的匹配
- 在php中用正则表达式实现最短匹配
- php匹配邮箱正则
- php正则表达式匹配座机电话、手机号码
- PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能