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-07-30 19:18:34

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这

Shell脚本中通过正则表达式匹配IP地址

  这篇文章主要介绍了Shell脚本中通过正则表达式匹配IP地址,本文直接给出实现代码,需要的朋友可以参考下 在运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址. shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互

shell脚本中用正则表达式匹配IP及Email

shell也可以使用正则分组捕获,不过不能使用 $1或\1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互式的脚本,可以通过expect来实现):    #!/bin/baship="121.0.2.2"if [[ $ip =~ ^([0-9]{1,2}|1[0-9][0-9]|

Shell脚本中通过正则表达式匹配IP地址_linux shell

在运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址. shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或\1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互式的脚本,可以通过expect来实现): 复制代码 代码如下: #!/bin/bash ip="1

Python正则表达式匹配ip地址实例_python

本文实例讲述了正则表达式匹配ip地址实例.代码结构非常简单易懂.分享给大家供大家参考. 主要实现代码如下: import re reip = re.compile(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])') for ip in reip.findall(line): print "ip>>>", ip PS:关于正则,这里再为大家推荐2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式

正则表达式匹配IP的表达式(推荐)

这里给大家详细讲解一下一个匹配IP地址的正则表达式, 有关正则方面的知识,会在详细的讲解中提到. 在讲解之前,我先给大家介绍一下,ip地址的生成规则. IP地址,是由32位数字二进制转为四个十进制的字符串组成. 怎么转化?下面讲解: 二进制:11111111111111111111111111111111 分为四部分:11111111.11111111.11111111.11111111 转化:2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0=255 转为十进制范围:0~255.0

XP系统下如何安装TCP/IP协议?

  XP系统下如何安装TCP/IP协议? 方法一 单击"开始"菜单,弹出的列表单击"控制面板"项 在"控制面板"里找到并双击打开"网络连接" 在"本地连接"上鼠标右键,单击"属性" 进入"常规"选项卡界面,单击"安装" 在选择网络组件类型列表中选中"协议",单击"添加" 在选择网络协议界面中,单击"

python在Windows8下获取本机ip地址的方法_python

本文实例讲述了python在Windows8下获取本机ip地址的方法.分享给大家供大家参考.具体实现方法如下: import socket hostname = socket.gethostname() IPinfo = socket.gethostbyname_ex(hostname) LocalIP = IPinfo[2][2] print LocalIP 希望本文所述对大家的Python程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内

Nginx匹配IP

Nginx 匹配ip 首先,大家如果看到有什么不懂的地方,欢迎吐槽!!! 我会在当天或者第二天及时回复,并且改进~~ 定义反向代理 upstream portal.hongxue.com { server 192.168.0.216:100 weight=1; } upstream mobile.hongxue.com { server 192.168.0.216:200 weight=1; } upstream console.hongxue.com { server 192.168.0.21