当前位置: 首页 > news >正文

Bugku CTF_Web——字符?正则?

Bugku CTF_Web——字符?正则?

进入靶场

在这里插入图片描述

<?php 
highlight_file('2.php');
$key='flag{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){ die('key is: '.$key);
}
?>

一个php代码

1. highlight_file('2.php');
功能:
将当前 PHP 文件的内容高亮显示在网页中。
这是为了让用户查看该文件的源码,但不会影响脚本的逻辑执行。
2. $key='flag{********************************}';
功能:
定义一个包含占位符的密钥变量 $key。
该变量的值类似于一个 FLAG,但实际内容被隐藏(用 * 替代)。
3. 正则表达式匹配:
php
复制代码
$IM = preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
正则表达式解释:
模式:key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]
key: 匹配字符串 key。
.*key: 匹配任意字符(0 个或多个),直到再次遇到 key。
.{4,7}: 匹配 4 到 7 个任意字符。
key:/./:
匹配 key:/ 后接任意一个字符 /。
(.*key): 捕获组,匹配任意字符(0 个或多个),直到遇到 key。
该捕获组的内容会被存储在 $match[1] 中。
[a-z]: 匹配一个小写字母。
[[:punct:]]: 匹配一个标点符号(如 !, ?, . 等)。
/i: 忽略大小写匹配。
匹配逻辑:
从用户传入的 id 参数值中,检测是否符合上述正则表达式。
如果匹配成功,preg_match 返回 1,并将匹配结果存储到 $match 数组中。
4. 条件判断:
php
复制代码
if ($IM) {die('key is: ' . $key);
}
功能:如果正则匹配成功,程序会立即执行 die() 函数。
输出 key is: 和 $key 的值。
随后终止程序。
否则:如果匹配失败,脚本什么也不会输出,程序继续运行(虽然在当前代码中没有后续逻辑)。
可能的漏洞或用法:
正则表达式解析绕过:开发者试图通过正则表达式限定用户输入,但复杂的规则可能存在绕过方式。
通过精心构造 id 参数,可以触发条件并泄露 $key 的值。
正则调试:输入可能是类似以下格式的字符串:
javascript
复制代码
keyxxxxxkeyxxxxkey:/x/somethingkeyy?
xxxxx: 任意字符。
:/x/somethingkey: 满足捕获组 (.*key)。
y: 一个小写字母。
?: 一个标点符号。

构造payload

?id=keyABCkey1234key:/X/somethingkeya!

在这里插入图片描述

再把2.php去掉

在这里插入图片描述

成功拿到flag

flag{80ef930e08856cb2403d3eec54aa578f}

在这里插入图片描述

相关文章:

Bugku CTF_Web——字符?正则?

Bugku CTF_Web——字符&#xff1f;正则&#xff1f; 进入靶场 <?php highlight_file(2.php); $keyflag{********************************}; $IM preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match); if…...

C# 中Math.Round 和 SQL Server中decimal(18,2) 不想等的问题

首先了解Math.Round方法的默认舍入规则 在C#中&#xff0c;Math.Round方法使用的是“银行家舍入法”&#xff08;也叫四舍六入五成双&#xff09;。这种舍入规则是&#xff1a;当要舍弃的数字小于5时直接舍去&#xff1b;当要舍弃的数字大于5时进位&#xff1b;当要舍弃的数字正…...

lab2:docker基础实战

一、实验目的 1.通过本次实验&#xff0c;完成Docker主机的安装和配置、镜像的搜索和下载、容器生命周期的基本管理、容器网络的管理。 2.通过Dockerfile来构建nginx镜像&#xff0c;了解Dockerfile镜像构建过程。 二、实验内容与实验要求 1.完成Docker的安装和配置。 2.完…...

Druid 1.2 源码导读

Druid 是阿里巴巴开源的数据库连接池和监控组件&#xff0c;广泛用于 Java 应用程序中。Druid 1.2 版本提供了高性能的连接池和丰富的监控功能。以下是对 Druid 1.2 源码的导读&#xff0c;帮助你理解其架构和设计。 1. 源码获取 从 GitHub 上获取 Druid 1.2 的源码&#xff…...

千益畅行,共享旅游卡市场乱象解析与未来展望

在当今旅游市场蓬勃发展的大背景下&#xff0c;共享旅游卡作为一种新兴的旅游消费模式&#xff0c;受到了广泛关注。然而&#xff0c;伴随着其快速发展&#xff0c;市场乱象也层出不穷。作为千益畅行共享旅游卡的全国运营总监&#xff0c;我深感有必要对这些问题进行深入剖析&a…...

Dubbo源码解析-服务导出(四)

一、服务导出 当我们在某个接口的实现类上加上DubboService后&#xff0c;就表示定义了一个Dubbo服务&#xff0c;应用启动时Dubbo只要扫描到了DubboService&#xff0c;就会解析对应的类&#xff0c;得到服务相关的配置信息&#xff0c;比如&#xff1a; 1. 服务的类型&…...

浅谈React的虚拟DOM

React的虚拟DOM&#xff1a;揭秘高效渲染的秘密 在React中&#xff0c;虚拟DOM&#xff08;Virtual DOM&#xff09;是一个核心概念&#xff0c;它是React能够提供高效渲染和更新的关键。虚拟DOM是一个轻量级的JavaScript对象&#xff0c;表示真实的DOM树。通过使用虚拟DOM&am…...

linux上海康SDK安装并设置环境变量

将HCNetSDK下linux部分复制到客户端电脑/usr/lib/HCNetSDK下:sudo cp -r H /usr/lib/HCNetSDK H是我的文件夹&#xff0c;要把这个文件夹的内容复制到/usr/lib/HCNetSDK路径里。 编辑&#xff1a;vi ~/.bashrc 找到export,按 i 插入换行添加 export LD_LIBRARY_PATH$LD_LIB…...

【计算机网络】UDP网络程序

一、服务端 1.udpServer.hpp 此文件负责实现一个udp服务器 #pragma once#include <iostream> #include <string> #include <cstdlib> #include <cstring> #include <functional> #include <strings.h> #include <unistd.h> #incl…...

什么是全域电商?有哪些电商代运营公司能做全域电商代运营?

什么是全域电商&#xff1f;有哪些电商代运营公司能做全域电商代运营&#xff1f; 随着电商行业的迅猛发展&#xff0c;传统的单一平台运营模式已经无法满足品牌多元化发展的需求。在此背景下&#xff0c;全域电商作为一种新兴的运营方式应运而生&#xff0c;成为越来越多品牌在…...

微信小程序上传pdf和显示

引用&#xff1a;https://blog.csdn.net/qq_54027065/article/details/129854339 loadResume(){let that thisuni.showLoading({title:"下载中"})wx.downloadFile({url:url,success:(res)>{console.log(res,"res11111")if (res.statusCode 200){setTi…...

MongoDB分布式集群搭建----副本集----PSS/PSA

MongoDB分布式集群 Replication 复制、Replica Set 复制集/副本集 概念 一、 副本集的相关概念 1.概念 “ A replica set is a group of mongod instances that maintain the same data set. ” 一组MongoDB服务器&#xff08;多个mongod实例&#xff09;&#xff08;有不…...

PDF编辑的好东西

1.Eage浏览器 直接拖到浏览器中就ok了&#xff0c;这样读书的话是非常爽的&#xff0c;然后的话最近&#xff0c;也不知道学啥&#xff0c;vue开发网站&#xff0c;一开始的配置&#xff0c;也是给我难到了&#xff0c;所以没有办法&#xff0c;就随便找点书看看吧&#xff0c…...

块设备的两种访问方法的区别

概述 1.当我们运行类似于“dd if/dev/sdb1ofsdb1.img”的命令把整个/dev/sdb1裸分区复制到sdb1.img的时候&#xff0c;内核走的是def_blk_fops这个file_operations 2.另外一种方法是通过文件系统来访问块设备&#xff0c;file_operations的实现则位于文件系统内&#xff0c;文…...

java 泛型中的 ?

在 Java 泛型中&#xff0c;? 被称为通配符&#xff08;wildcard&#xff09;&#xff0c;它代表了未知的类型。使用通配符可以增加代码的灵活性&#xff0c;允许在不知道具体类型的情况下操作泛型类或接口。通配符主要有以下几种形式&#xff1a; 无界通配符&#xff08;Unbo…...

如何在jupyter notebook切换python环境

目录 参考链接 首先确保conda已经正常安装 conda --version 或者conda -V 以下请将“myenv”替换成自己的命名&#xff01;&#xff01;&#xff01; 1-查看虚拟环境目录 conda env list 2-创建虚拟环境命令 conda create -n myenv 或者 conda create --name myenv 3-激活虚拟环…...

用Python将Word文档转换为Markdown格式

Markdown作为一种轻量级标记语言&#xff0c;以其简洁的语法和广泛的兼容性&#xff0c;特别适合用于博客、技术文档和版本控制系统中的内容管理。而Word文档则因其强大的排版功能&#xff0c;常常成为文档制作的首选。然而&#xff0c;直接使用Word格式在某些平台上可能显得过…...

CSV 文件

CSV&#xff0c;全称为 Comma-Separated Values&#xff09;&#xff08;逗号分隔值&#xff09;&#xff0c;是一种常用的文本文件格式&#xff0c;用于存储表格数据&#xff0c;如电子表格或数据库。它采用纯文本形式&#xff0c;以逗号作为字段之间的分隔符&#xff0c;每行…...

SpringCloud核心组件(五)

文章目录 Gateway一. 概述简介1. Gateway 是什么2. 什么是网关?3.Gateway 和 Nginx 两个网关的区别什么是流量入口&#xff1f; 4.Gateway 能干嘛5.gateway 三大核心概念6.运行方式 二. 入门案例a.创建gateway模块&#xff0c;在pom.xml中引入依赖b.创建启动类GatewayApplicat…...

TCP为什么需要三次握手和四次挥手,有哪些需要注意的地方?

TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。为了确保数据能够准确无误地从一端发送到另一端&#xff0c;TCP设计了一系列机制来保证通信的可靠性&#xff0c;其中包括连接建立和断开的过程。 三次握手&#xff08;Three-…...

机器学习(基础2)

特征工程 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程API 实例化…...

Cpolar 内网穿透使用

Cpolar登录地址&#xff1a;cpolar - secure introspectable tunnels to localhost 使用固定公网TCP连接ssh ssh -p端口号 用户名公网地址...

ThreadLocal 提供线程局部变量

ThreadLocal作用 相当于建立一个独立的空间&#xff0c;可以把使用频率高的任何类型的数据放到里面&#xff0c;方便调用用来存取数据&#xff1a;set()/get()使用ThreadLocal存储的数据&#xff0c;线程安全 ThreadLocal工具类 /*** ThreadLocal 工具类*/ SuppressWarnings(…...

MongoDB聚合管道数组操作

数组表达式运算符判断数组中是否包含元素( i n ) 并获取元素索引 ( in)并获取元素索引( in)并获取元素索引(indexOfArray) 一、初始化成员数据 db.persons.insertMany([{ "_id" : "1001", "name" : "张三", "fruits" : [ …...

大数据如何助力干部选拔的公正性

随着社会的发展和进步&#xff0c;干部选拔成为组织管理中至关重要的一环。传统的选拔方式可能存在主观性、不公平性以及效率低下等问题。大数据技术的应用&#xff0c;为干部选拔提供了更加全面、精准、客观的信息支持&#xff0c;显著提升选拔工作的科学性和公正性。以下是大…...

Python_爬虫2_爬虫引发的问题

目录 爬虫引发的问题 网络爬虫的尺寸 网络爬虫引发的问题 网络爬虫的限制 Robots协议 Robots协议的遵守方式 Robots的使用 对Robots协议的理解 爬虫引发的问题 网络爬虫的尺寸 爬取网页&#xff0c;玩转网页&#xff1a; 小规模&#xff0c;数据量小&#xff0c;爬取…...

shell编程之编程基础

目录 为什么学习和使用Shell编程Shell是什么shell起源查看当前系统支持的shell查看当前系统默认shellShell 概念 Shell 程序设计语言Shell 也是一种脚本语言用途 如何学好shell熟练掌握shell编程基础知识建议 Shell脚本的基本元素基本元素构成&#xff1a;Shell脚本中的注释和风…...

24.11.15 Vue3

let newJson new Proxy(myJson,{get(target,prop){console.log(在读取${prop}属性);return target[prop];},set(target,prop,val){console.log(在设置${prop}属性值为${val});if(prop"name"){document.getElementById("myTitle").innerHTML val;}if(prop…...

图形几何之美系列:法向量计算之轮廓有向面积辅助法

“ 垂直于平面的直线所表示的向量为该平面的法向量&#xff0c;可以通过法向量识别平面正反面。法向量是轮廓或面的重要特征&#xff0c;求轮廓法向是一种基础的几何工具算法&#xff0c;在图形几何、图像处理等领域具有广泛的应用。” 图形几何之美系列&#xff1a;三维实体结…...

CPU的性能指标总结(学习笔记)

CPU 性能指标 我们先来回顾下&#xff0c;描述 CPU 的性能指标都有哪些。 首先&#xff0c;最容易想到的应该是 CPU 使用率&#xff0c;这也是实际环境中最常见的一个性能指标。 用户 CPU 使用率&#xff0c;包括用户态 CPU 使用率&#xff08;user&#xff09;和低优先级用…...