PHP利用PCRE回溯次数

news2024/9/22 1:24:52

目录

原理

例子

来一道题(2018·i春秋圣诞欢乐赛官方WriteUp)

利用php弱语言特性解题

利用回溯


原理

对于一串正则表达式来说它匹配了一系列的字符串后自身的正则还没有用完,这个时候就会触发回溯机制,超过回溯次数正则匹配就失效

例子

正则

<\?.*[(`;?>].*

 匹配的字符串

 <?php phpinfo();//aaaaa

当正则匹配道.*的时候整个字符串就都匹配到了,.*匹配完之后正则的匹配不会停止而是回溯接着完成[(`;?> ]匹配

就是第一次回吐

 <?php phpinfo();//aaaa

第二次回吐

 <?php phpinfo();//aaa

第三次回吐

 <?php phpinfo();//aa

......

第七次回吐,这是;可以匹配[(`;?>] 然后在进行匹配.*

 <?php phpinfo();

这个回吐是有限制的超过这个限制,preg_match 函数返回 false

这个回吐的限制中文版php文档中10万次,英文版文档100万次,以英文版为主

来一道题(2018·i春秋圣诞欢乐赛官方WriteUp)

<?php
function areyouok($greeting){
    return preg_match('/Merry.*Christmas/is',$greeting);
}

$greeting=@$_POST['greeting'];
if(!areyouok($greeting)){
    if(strpos($greeting,'Merry Christmas')!==false){
        echo 'Merry Christmas. '.'flag{test}';
    }else{
        echo 'Do you know .swp file?';
    }
}else{
    echo 'Do you know PHP?';
}
?>

利用php弱语言特性解题

可以直接利用php弱语言的特性,strpos只能检测数组,你给他提交一个数组,然后   if(strpos($greeting,'Merry Christmas')!==false)判断自然就是false就可以获取flag,如下图抓包后传参得到flag

利用回溯

注意这个回溯对php版本是有要求的比如7.3就不行,因为7.3回溯失败返回的是’1‘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1997315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码故事】VSCode知名主题material-theme仓库代码清空

大家好&#xff0c;我是前端之虎陈随易。 这是我的个人网站 https://chensuiyi.me。 出大事了 看到了一篇前端社区开源扛把子 Anthony Fu 的帖子。 经过一番了解&#xff0c;出大事了&#xff01; 知名 VSCode 主题 material-theme 仓库清空了&#xff01; 连带着所有提交…

【MySQL】1.MySQL基本操作

目录 一、MySQL数据库登陆 1、设置环境变量 2、cmd命令登陆数据库 二、基本操作语法 1、显示数据库——SHOW 2、使用/选择数据库——USE 3、删除——DROP 4、创建——CREATE 5、查看表结构——DESC 6、数据操作——增删改查 &#xff08;1&#xff09;增/插入&#…

SpringCloud-gateway编码实现路由策略的自动刷新,动态路由

文章目录 一、概述1、背景2、实现思路 二、编码实现1、nacos配置刷新公共类2、自定义RouteDefinition3、route缓存类4、动态更新路由网关service5、动态路由加载类 三、测试 一、概述 1、背景 gateway可以配置路由断言过滤器&#xff0c;但是通常一个微服务体系下&#xff0c…

KCTF 闯关游戏:1 ~ 7 关

前言 看雪CTF平台是一个专注于网络安全技术竞赛的在线平台&#xff0c;它提供了一个供网络安全爱好者和技术专家进行技术交流、学习和竞技的环境。CTF&#xff08;Capture The Flag&#xff0c;夺旗赛&#xff09;是网络安全领域内的一种流行竞赛形式&#xff0c;起源于1996年…

虚拟机Linux系统字体太小怎么办?

每次用虚拟机的Linux系统时&#xff0c;都觉得字体小得伤眼睛&#xff0c;所以就尝试找了下&#xff0c;没想到可以直接用大号字体&#xff0c;这感觉好多啦~ 这里针对centOS的图形界面&#xff0c;非常简单&#xff0c;见下面的图&#xff1a; 应用程序 --> 系统工具 --&…

ELK三个开源软件的工作原理

一、Elasticsearch Elasticsearch的工作原理主要涉及其数据处理、索引机制、查询过程以及集群管理等方面。一下是对Elasticsearch工作原理的详细解析&#xff1a; 1. 数据处理 1.1 数据导入 Elasticsearch支持多种数据源&#xff0c;包括直接输入、通过Logstash和Beats等工具…

js日期处理库--dayjs

js中处理日期是一件比较麻烦的事情&#xff0c;这里推荐使用day.js库来处理&#xff0c;文档:Day.js中文网 引入库 如果没有引入过dayjs,需要先执行npm install,然后import就能使用了 npm install dayjs import dayjs from dayjsconsole.log(dayjs().format()) 如果使用的…

leetcode日记(67)单词搜索

太坑了&#xff01;老是时间超限&#xff0c;不是时间超限就是内存超限&#xff01; 思路很简单&#xff0c;就是先遍历整个网格寻找开头&#xff0c;然后上下左右搜寻找下一个字母&#xff0c;引用递归。 最终看边答案边写出来的&#xff1a; class Solution { public:bool …

36-《茅膏菜》:自然奇境中的捕虫艺术家

茅膏菜 腺毛闪烁诱昆虫&#xff0c;粘液缠绕捕食成。 绿叶如网藏陷阱&#xff0c;茅膏菜展捕虫情。 中文名&#xff1a;茅膏菜 拉丁名&#xff1a;Drosera peltata Thunb. 别名&#xff1a;捕虫草、落地珍珠、一粒金丹、苍蝇草、珍珠草 科属&#xff1a;茅膏菜科茅膏菜属 生…

词向量,位置嵌入;归一化;自注意力层;投影;残差连接:防止梯度消失;MLP;

目录 词向量,位置嵌入 归一化 自注意力层 我们该如何处理Q、K和V向量呢 投影 残差连接:防止梯度消失 MLP 层归一化处理 GELU激活函数 MLP Weights 和MLP Projection Weights区别和联系 一、MLP Weights 二、MLP Projection Weights:输入数据或隐藏层的输出投影到…

指针(1)-学习笔记

指针&#xff08;1&#xff09;-学习笔记 1.内存1.1内存 2.指针变量和地址2.1取地址操作符&#xff08;&&#xff09;2.2指针变量和解引用操作符&#xff08;*&#xff09;2.2.1 指针变量2.2.2解引用操作符 3 指针变量类型的意义3.1指针的解引用3.2指针-整数3.3 void*指针 …

PyTorch深度学习实战(7)—— 线性回归

线性回归是机器学习的入门内容&#xff0c;应用十分广泛。线性回归利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系&#xff0c;其表达形式为$y wxbe$。其中&#xff0c;$x$和$y$是输入输出数据&#xff0c;$w$和$b$是可学习参数&#xff0c;误差$e$服…

Pod的调度机制

文章目录 一、Pod调度概述二、Pod调度策略实现方式三、kube-scheduler调度1、kube-scheduler调度的流程2、过滤阶段3、打分阶段4、kube-scheduler 调度示例4.1、创建 Deployment 资源清单4.2、应用Deployment4.3、查看被kube-scheduler自动调度的Pod 四、nodeName调度1、创建Po…

MySQL操作2——表的的操作(增删查改)

创建表; 样例&#xff1a; 注意不同的存储引擎创建出来的表在目录下的个数不同 显示此数据库下的所有表&#xff1a;show tables; show create table name \G ——查看创建表时的具体信息 查看某个表的结构&#xff1a;desc 表名&#xff1b; 查看表中储存的数据&…

阿里云与优酷联袂:Create@AI江湖创作大赛,探索AI创新边界

随着网剧《少年白马醉春风》的热播&#xff0c;许多人心中的江湖梦被唤醒&#xff0c;渴望踏入那个充满传奇色彩的影视世界&#xff0c;体验一段属于自己的江湖之旅。在 AIGC 技术日益成熟的今天&#xff0c;这一梦想变得触手可及。阿里云携手优酷&#xff0c;发起了 Create A…

Hadoop YARN:现代大数据集群资源管理与作业调度

1.Yarn的概述 1.1.解释Yarn的定义和基本概念 Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;是 Hadoop 2.x 版本引入的一种资源管理器&#xff0c;用于管理和调度大数据集群中的资源&#xff0c;是 Hadoop 集群的核心组件之一。YARN 的设计目标是提高 H…

浅谈C语言动态内存分配

1、什么是动态内存分配 正常情况下&#xff0c;我们创建变量&#xff0c;都是向计算机内存中申请一个静态的内存&#xff0c;也就是说&#xff0c;一旦申请成功&#xff0c;这块内存的大小便不能再改变&#xff0c;并且能申请多少内存在一定程度上都是确定的。比如说&#xff…

【网络层】路由基础

文章目录 技术背景IP 路由工作原理IP路由表 技术背景 路由是能够让整个Internet持续运转的关键。回看之前的网络历史&#xff0c;最开始用一根网线将两台设备连接起来&#xff0c;面对面就能通信。到后面出现了交换机&#xff0c;能够让区域内的所有设备互相通信&#xff0c;形…

WPF篇(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说&#xff0c;Border并不是一个布局控件&#xff0c;因为它并不是Panel的子类&#xff0c;而是Decorator装饰器的子类&#xff0c;而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

少儿编程 2024年6月scratch四级 电子学会图形化编程等级考试四级真题和答案解析(选择题)

2024年6月scratch编程等级考试四级真题 选择题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 1、运行下列程序&#xff0c;输入单词“PLAY”最后角色说 A、LY4AP B、AP4LY C、YA4PL D、PL4AY 答案&#xff1a;B 考点分析&#xff1a;考查积木综合…