<!--
google_ad_client = "pub-4490194096475053";
/* 内容页,300x250,第一屏 */
google_ad_slot = "3685991503";
google_ad_width = 300;
google_ad_height = 250;
// -->
$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截断绕过正则过滤来构造我们需要的数据了:)
分享到:
相关推荐
- **模式匹配**:可以快速找出文本中的特定模式,如日期格式、IP地址等。 #### 三、PHP中的正则表达式 PHP支持两种类型的正则表达式:Perl兼容正则表达式(PCRE)和POSIX兼容正则表达式。 1. **Perl兼容正则...
`getQQ` 函数利用 `ereg`(正则表达式匹配函数)从文本中提取5-9位的数字,即QQ号。`([0-9]{5,9})` 匹配5到9个连续的数字。 3. **解析HTML中的标签**: 通过正则表达式 `/(.+?)>/is`,可以找到所有 `img` 标签...
函数的主要任务是通过正则表达式验证这些参数是否符合IPv4地址的格式,并进一步比较客户端IP地址与预设的IP模式和掩码是否匹配,以决定是否封锁该IP。 #### 3. IP模式与掩码的理解 - **IP模式**:指的是用于匹配的...
- **正则调试**:使用`preg_quote`和`ereg`系列函数进行正则测试和优化。 4. **DOM解析与XPath/CSS选择器** - **DOMDocument**:PHP提供的DOM解析器,用于加载HTML或XML文档并进行操作。 - **XPath**:基于路径...
- `ereg_replace`函数是PHP中的正则替换函数,但在PHP 7中已被弃用。题目中的代码段涉及了字符串替换,但具体输出结果需要根据正则表达式的匹配和替换规则来分析,此处不做详细解答。 3. PHP面向对象相关: - `...
根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。 1.2 PHP的先进之处 应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度...
`ereg()`是PHP的正则匹配函数,用于匹配字符串。 5. 分页 ```php function getpage($sql, $page_size=20) { // ... } function showPage($totalpage, $page, $url, $page_size=20) { // ... } ``` 这两个函数...
在示例代码中,还涉及到PHP的ereg和ereg_replace函数,它们用于字符串的模式匹配和替换,但因为ereg函数已被废弃,建议使用preg_match和preg_replace替代。 在程序的执行流程上,首先定义了download_file函数,该...
checkemail($inaddress)函数利用正则表达式来匹配邮箱地址的格式,从而验证邮箱地址是否符合标准格式。 ```php function checkEmail($inaddress){ return(ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_...