preg_match绕过简单总结
preg_match绕过
preg_match
PHP手册告诉我们, preg_match 函数的返回值有3种,分别为(安全的写法是使用 === 运算符对返回值进行比较,手册推荐用效率更快的 strpos 函数替代 preg_match 函数):
returns 1; // 如果匹配到.
returns 0; // 如果未匹配到.
returns FALSE; // 发生错误时.
绕过方法
1.数组绕过
原理:
preg_match只能处理字符串,当传入的subject是数组时会返回false
举例:
当输入的为数组时
2.PCRE回溯次数限制
原理:
具体可以参考p牛的博客:
举例:
3.换行符绕过
原理:
举例:
这里如果正则变成了/^.*flag.*$/s
则无效了
- 而在非多行模式下,
$
似乎会忽略在句尾的%0a
- 这里本地没测试成功,不知道是版本问题还是什么,挖坑。回头补上
4.多行匹配
- /m 多行匹配,但是当出现换行符
%0a
的时候,会被当做两行处理,而此时只可以匹配第 1 行,后面的行就会被忽略。- 也没成功 回头补上
参考连接:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~