首页 > 其他分享 >bugku-No one knows regex better than me

bugku-No one knows regex better than me

时间:2022-11-13 21:37:13浏览次数:51  
标签:regex me bugku 匹配 preg zero php match first

难得开靶场所需要的金币,比完成题目给的少

题目源码

 <?php 
error_reporting(0);
$zero=$_REQUEST['zero'];
$first=$_REQUEST['first'];
$second=$zero.$first;
if(preg_match_all("/Yeedo|wants|a|girl|friend|or|a|flag/i",$second)){
    $key=$second;
    if(preg_match("/\.\.|flag/",$key)){
        die("Noooood hacker!");
    }else{
        $third=$first;
        if(preg_match("/\\|\056\160\150\x70/i",$third)){
            $end=substr($third,5);
            highlight_file(base64_decode($zero).$end);//maybe flag in flag.php
        }
    }
}
else{
    highlight_file(__FILE__);
} 

看题可知,需要成功匹配preg_match_all,以及第二个preg_match,绕过第一个preg_match.

补充

preg_match_all(),preg_match()两个函数匹配失败返回False

成功则返回匹配的次数

 

最后匹配成功会对输入的first将前5个字符截断,并且对zero,base64解码.

用这个网站(https://regexr-cn.com/)来分析正则表达式

第一个匹配绕过简单,第二个将起输入到上面的网站中知道是\或者.php符合其中之一即可

尝试写payload,post上传,zero=ZmxhZw==&first=Yeedo.php

尝试了好几次不行

打开phpStorm

<?php                               
$php=".php";                        
if(preg_match("/\\|.php/i",$php)){  
    print("yes");                   
}                                   
?>                                  

输出为空?????

 

 发现\\|变成同样颜色了,难道|被转义了?

 

<?php                                                           
$php="|.php";                                                   
if(preg_match("/\\|.php/i",$php)){                              
    print("yes");                                               
}                                                               
?>                                                              

在.php加上|

输出为yes,,,彻底懵了

改写payload,,zero=ZmxhZw==&first=girl|.php

成功输出flag

去百度找到的解释是

执行php语法转义  \\ => \,剩下 \|.php
执行正则语法转义  \| => |,剩下 |.php

标签:regex,me,bugku,匹配,preg,zero,php,match,first
From: https://www.cnblogs.com/liudaxiaxd/p/16887010.html

相关文章

  • Transformer
    Transformer在那里做了权重共享,为什么可以做权重共享?好处是什么?InputEmbedding和OutputEmbedding共享Decoder中Embedding层和FC层权重共享Transformer的点积模型......
  • Jmeter使用指定的jdk版本运行
    1、将jmeter.bat文件改为jmeter.txt文件,打开后找到图示处的内容2、添加jdk路径3、将jmeter.txt文件改回jmeter.bat即可......
  • [ARC086F] Shift and Decrement 题解
    linkSolution一个简易的贪心想法是我们肯定是对于一个相同的序列求出操作到它的最小操作次数,看能否\(\leK\)。注意到我们在第\(x\)次A操作后进行\(-1\)操作相当于......
  • 使用MySQL时出现The server time zone value '�й���׼ʱ��' is unrecogni的解决方法
    问题:Causedby:com.mysql.cj.exceptions.InvalidConnectionAttributeException:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmorethanoneti......
  • Re:从零开始教你使用 Sublime Text
    目录Re:从零开始教你使用SublimeText0.前言0-0.关于我为什么要写这篇文章0-1.关于这篇文章会讲什么0-2.适用人群0-4.其他0-5.无用的统计1.安装和基础功能介绍1-0.下载1-1......
  • Prometheus实践
    一、下载安装Prometheus1.​下载地址:​​https://prometheus.io/download/​​2.解压缩后3.修改配置文件prometheus.yml如下global:scrape_interval:15s#Setthescra......
  • chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存
    1.常用保存Sources源码的两种方法1.1单个文件直接右键另存为1.2单个页面保存网页,就会把引用到的所有文件下载下来如果页面很多,文件也很多,静态资源也很多,那么得一......
  • element ui-Dropdown 下拉菜单使用方法
     直接上代码: dropdown下拉列表,通常是 <el-dropdown-menu> 组件 <template><div><el-dropdown@command="handleCommand"><spanclass="el......
  • 从零开始游戏开发——3.6 材质与Mesh
    需要显示一个模型,虽然可以通过在代码指定顶点数据、显示的纹理、使用的Shader等内容,但游戏开中这些数据通常都是由美术人员提供的,这就涉及到了材质和Mesh的概念。材质......
  • Centos7把home目录下多余的空间转移到/根目录下
    通过df-h发现,根目录只有32G,而home目录可用的,居然有142G。我现在想分出70G给根目录把你需要挂载的机器的逻辑卷记住(上面的图,左边是逻辑卷,右边是虚拟磁盘)/dev/mapper/cl-h......