preg_match绕过简单总结

preg_match绕过

preg_match

2

PHP手册告诉我们, preg_match 函数的返回值有3种,分别为(安全的写法是使用 === 运算符对返回值进行比较,手册推荐用效率更快的 strpos 函数替代 preg_match 函数):

returns 1;      // 如果匹配到.
returns 0;      // 如果未匹配到.
returns FALSE;  // 发生错误时.

绕过方法

1.数组绕过

原理:

preg_match只能处理字符串,当传入的subject是数组时会返回false

举例:

image-20230330083809693

image-20230330083801014

当输入的为数组时

image-20230330083829865

2.PCRE回溯次数限制

原理:

具体可以参考p牛的博客:

image.png

举例:

image-20230330084206158

3.换行符绕过

原理:

image-20230330084657773

举例:

image-20230330085103540

image-20230330085130912

image-20230330085120412

这里如果正则变成了/^.*flag.*$/s 则无效了

  • 而在非多行模式下,$ 似乎会忽略在句尾的 %0a
    • 这里本地没测试成功,不知道是版本问题还是什么,挖坑。回头补上

4.多行匹配

  • /m 多行匹配,但是当出现换行符 %0a 的时候,会被当做两行处理,而此时只可以匹配第 1 行,后面的行就会被忽略。
    • 也没成功 回头补上

参考连接:

posted @   z2n3  阅读(2815)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示