No one knows regex better than me

news/2025/1/13 21:14:30/

 No one knows regex better than me

代码分析,传了两个参数zero,first,然后$second对两个所传的参数进行了拼接

好比:?zero=1&first=2

传入后就是: 12

然后对$second进行了正则匹配,匹配所传入的参数是否包含字符串Yeedo|wants|a|girl|friend|or|a|flag且忽略字母大小,如果匹配到了字符串就会继续执行,且$key=$second,再对$key进行了匹配,如果匹配到了..和flag就会输出Noooood hacker!,且代码结束执行。

反之,如果没有匹配到..和flag就会把$third赋值为$first;同时对$third进行匹配,检查 $third 是否包含以下字符或字符串(忽略大小写):

|

\\(反斜杠)

.(点号,由 ASCII 编码 \056 表示)

php(由 ASCII 编码 \160\150\x70 表示)

如果匹配到了,就会继续执行$end=substr($third,5);

会把$third所传入的参数从第5个进行截取,也就是说,当传入Yeedols时会截取为ls;

接着会高亮显示base64_decode($zero).$end的内容

那么是不是base64_decode($zero).$end的内容就可以是一个文件名,题目提示了flag.php,

那么是不是就可以highlight(flag.php);这样就可以高亮显示flag.php文件的内容

但是不能够有flag字符串,利用到base64_decode($zero)#注:decode是解码,会把$zero的内容进行base64解码。

我们把flag进行base64编码,ZmxhZw==

构造:?zero=ZmxhZw==&first=

flag解决了,那么就差.php,对正则匹配进行绕过,首先含有字符串Yeedo|wants|a|girl|friend|or|a|flag;而且还要有

  • 反斜杠 \竖线 |
  • 点号 .
  • 字符串 php(不区分大小写)。

 如果传入Yeedo|wants|friend,那么截取后就不能够满足第二个匹配,flag又不能够存在

 剩下的就是a|girl|or|a

构造?zero=ZmxhZw==&first=girl|.php,这样就会截取为?zero=ZmxhZw==&first=.php

zero再通过base64解码就会成为flag,再经过拼接就是flag.php,这样就会高亮显示flag.php的内容

那么为什么不能够用反斜杠呢?

\.在传入后会进行转义,转义后\. 会被解释为字面上的点号。

同样不能使用点号,不然就会构成..,这是被正则匹配了的。

这个题的大体意思就是:高亮显示通过base64解码后的$zero和$end所拼接的内容(拼接后的就是文件名),这是漏洞的成因,然后对三次正则匹配进行绕过就可以。


http://www.ppmy.cn/news/1562275.html

相关文章

计算机网络(二)——物理层和数据链路层

一、物理层 1.作用 实现相信计算机节点之间比特流的透明传输,尽可能屏蔽具体传输介质和物理设备的差异。 2.数据传输单位 比特。 3.相关通信概念 ①信源和信宿:即信号的发送方和接收方。 ②数据:即信息的实体,比如图像、视频等&am…

八万字Java面试高频题目汇总(冲刺春招!)

文章目录 1.计算机网络1.介绍一下TCP/IP五层模型?2.**什么是TCP三次握手、四次挥手?****3.HTTPS和HTTP的区别是什么?**4.**浏览器输入www.taobao.com回车之后发生了什么**?1.URL解析,对URL进行编码,之后查看…

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1Tzr9Y3EQ7/ 《安富莱嵌入式周报》第348期:开源低功…

FPGA自学之路:到底有多崎岖?

FPGA,即现场可编程门阵列,被誉为硬件世界的“瑞士军刀”,其灵活性和可编程性让无数开发者为之倾倒。但谈及FPGA的学习难度,不少人望而却步。那么,FPGA自学之路到底有多崎岖呢? 几座大山那么高?…

R语言的计算机基础

R语言计算机基础 引言 R语言是一种用于数据分析、统计计算和图形显示的编程语言。它被广泛应用于统计学、数据科学、生态学、生物信息学等多个领域。由于其强大的功能和灵活性,R语言在学术界和工业界都得到了广泛的认可和应用。本文将从R语言的基本概念、数据类型…

Excel 做数据分析的好与不好

日常工作中,涉及到数据的计算分析,Excel 一定是使用最多的。但是也有不少小伙伴困惑于 Excel 的深入学习难度大,复杂问题不好做,相同问题重复烦,大数据跑不了等问题。这里我们就来聊一聊 Excel 做数据分的好与不好&…

初学stm32 --- DAC输出

目录 DAC寄存器介绍(F1) DAC控制寄存器(DAC_CR) DAC通道1的12位右对齐数据保持寄存器(DAC_DHR12R1) DAC软件触发寄存器(DAC_SWTRIGR) DAC输出实验配置步骤 相关HAL库函数介绍 关键结构体介绍(F1) DAC寄存器介绍(F1&…

python初体验: 处理excel数据

一. data.xlsx 二.python代码 import pandas as pd# 读取 Excel 文件 df pd.read_excel(./data.xlsx, sheet_nameSheet1, usecols[Name, Age, City])# 查看数据 print(df.head())# 筛选数据 df_filtered df[df[Age] > 30]# 添加新列 df_filtered[Salary] df_filtered[Ag…