RCE之无参数读取文件总结

RCE漏洞(Remote Code|Command Execute):

是指由于程序中预留了执行代码或者命令的接口,并且提供了给用户使用的界面,导致被黑客利用, 控制服务器。

代码执行漏洞原理:

传入php代码到执行函数的变量,客户端可控,并且没有做严格的过滤,攻击者可以随意输入他想执行的代码,并且这些代码在服务端执行

什么是无参数?

顾名思义,就是只使用函数,且函数不能带有参数

举个栗子:

<?php
highlight_file(__FILE__);
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {    
    eval($_GET['code']);
}
?>

这里使用preg_replace替换匹配到的字符为空,\w([^\W])匹配字母、数字和下划线,等价于 A-Za-z0-9_,然后(?R)?这个意思为递归整个匹配模式

所以正则的含义就是匹配无参数的函数,内部可以无限嵌套相同的模式(无参数函数),将匹配的替换为空,判断剩下的是否只有;

所以我们要使用无参数的函数进行文件读取或者命令执行

栗子:aaa(bbb(ccc()));      我们只可以这样,当然,这里可以是数字,_,不止是英文。不可以aaa('bbb');

那我们怎么通过这种输入函数的方式来获取文件内容呢?(大概思路)

1.首先可以先获取当前目录的所有文件

2.然后通过函数读取函数的内容,例如像show_source,hightlightfile等 

如果发现文件不在当前目录,可能在上一级,由该如何读取文件内容呢?

先来说目标文件在上一级目录的下:

可以通过diename()查看上一级目录,以及构造".."

漏洞复现:

1.首先准备好两个文件web3.php,flag.txt,我们的目的就是读取这个flag.txt里面的内容(同一目录)

2.打开BP,进行流量抓包

3.查看当前目录下有没有我们需要的文件

正常来说,我们可以通过print_r(scandir('.'));可以用来查看当前目录所有文件名,但是正则过滤了‘.’,所以我们需要构造出这个‘.’;

方法一:current(localeconv() )

current()返回数组中的单元,默认取第一个值,别名pos()。如果都被过滤还可以使用reset()

方法二:chr(46)

chr(46)就是字符"."

怎么构造46呢,因为函数要无参数

chr(current(localtime(time()))):

数组第一个值每秒+1,所以最多60秒就一定能得到46,用current(pos)就能获得"."

这里的Array[0]每过一秒值加一,一分钟内至少得到一个46

这里得到这个“.”了

这里我们就得到了当前目录下的所有文件及目录了!

这里还有另外一种思路:上面通过构造点的方式其实就是相对路径,我们还可以通过绝对路径的方式来展示当前路径下的文件

getcwd() — 取得当前工作目录

这不是跟之前构造“.”一样的效果嘛

4.读取文件内容

我们可以通过show_source(),readfile、highlight_file、readgzfile()等读文件函数都可以

注意:只可以读取文件,目录是不行的!

在此之前我们需要获取文件名,而获取文件名的方法有以下几种:

1.current(),返回数组第一个元素

2.end(),数组指针指向最后一个元素,也就是返回数组最后一个元素

3.next(),将数组的指针向后移动一位。就是第二个元素

介绍一个函数:array_reverse() 以相反的元素顺序返回数组

zlag.php(flag.php)本来在最后一位,反过来就成为第一位,可以直接用current(pos)读取

show_source(current(array_reverse(scandir(getcwd()))));

如果是倒数第二个我们可以用:

show_source(next(array_reverse(scandir(getcwd()))));

如果文件不是在前两个或者后两个位置,那有没有什么方法可以读取到呢?换个说法,有什么方法可以获取任意位置文件的文件名呢?

我们可以使用array_rand(array_flip()),array_flip()是交换数组的键和值,array_rand — 从数组中随机取出一个或多个随机键

通过这种方式我们可以随机获取到当前路径下的文件名或目录名

这不就是flag嘛。多随机几次就有了

5.获取上一级目录的文件

再介绍几个函数:

1.dirname() :返回路径中的目录部分

当然了,这里是可以叠加的

这样就算文件在哪里都能获取到了

2.构造“..”

print_r(next(scandir(getcwd())));:我们scandir(getcwd())出现的数组第二个就是"..",所以可以用next()获取

获取上一级目录的内容:

直接这样:readfile(array_rand(array_flip(scandir(dirname(getcwd()))))) 是不行的

因为默认是在当前工作目录寻找并读取这个文件,而这个文件在上一层目录,所以要先改变当前工作目录

show_source(array_rand(array_flip(scandir(dirname(chdir(dirname(getcwd())))))));

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

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

相关文章

IIC 通信协议详解

目录 一、概述二、I2C 详解1、I2C 总线简介2、I2C 协议相关知识2.1 起始位2.2 停止位2.3 数据传输2.4 应答信号2.5 I2C 设备地址格式2.5 I2C 时序图2.5.1 I2C 写时序2.5.2 I2C 读时序2.5.3 单个/多个字节的写入/读取 3、时钟同步和仲裁3.1 时钟同步3.2 时钟仲裁 一、概述 IIC …

Fal.ai Flux 1-Pro/Viva.ai/哩布哩布AI:AI绘图部分免费工具+原图提示词Prompt

目录 #1 找软件 #2 懂提示词 #3 更难的一步&#xff0c;会英文 我个人认为&#xff0c;想要玩文生图&#xff0c;你要会3个步骤&#xff1a; #1 找软件 主流文生图软件&#xff1a;Midjourney、Stable Diffusion、Dall-E 3 巧了&#xff0c;我用的都是小众、免费的画笔工…

【Linux】守护进程:containerd的使用教程

这里写目录标题 前言一. ctr1.1 ctr CLI1.2 ctr 调试 二、 创建 container2.1 进入 NewContainer2.2 ContainerService().Create 前言 介绍了 kubelet 通过 cri 接口和 containerd 交互的过程&#xff0c;containerd 源码分析&#xff1a;启动注册流程 介绍了 containerd 作为…

赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!

先赞后看&#xff0c;Java进阶马上一大半 海外geeksforgeeks网站画了这么一张Set集合的层次结构图&#xff0c;基本把Set集合涉及的常用类关系给标明了。 大家好&#xff0c;我是南哥。 一个Java学习与进阶的领路人&#xff0c;相信对你通关面试、拿下Offer进入心心念念的公司…

arthas使用

1.安装arthas 我的是windows #打开cmd&#xff0c;执行以下命令 &#xff0c;下载jar curl -O https://arthas.aliyun.com/arthas-boot.jar2.启动本地的idea项目 3.进入到jdk的bin文件夹 jdk的配置在“高级系统设置” 进入jdk的bin目录 4.启动arthas 5.arthas使用 trace 类…

Elasticsearch自动补全功能实践与Java API应用

Elasticsearch是一个强大的搜索引擎&#xff0c;它不仅支持全文搜索&#xff0c;还提供了自动补全功能&#xff0c;可以显著提升用户体验。自动补全功能允许用户在输入查询时实时显示建议项&#xff0c;帮助用户快速找到所需信息。本文将介绍如何使用Elasticsearch的RestHighLe…

探索Java Stream API:高效处理集合的利器

文章目录 一、Stream API简介1.1 什么是Stream&#xff1f;1.2 Stream的特点 二、Stream API的基本操作2.1 创建Stream2.2 中间操作2.3 终端操作 三、Stream API的高级应用3.1 并行Stream3.2 复杂数据处理3.3 Stream与Optional 四、最佳实践例子 1: 筛选和映射例子 2: 排序和收…

什么是流批一体?怎样理解流批一体?

目录 一、流式处理与批量处理概述 1.流式处理 2.批量处理 3.流批一体的定义 二、流批一体的关键特点 三、流批一体的技术实现 四、应用场景 五、实施流批一体的考虑因素 流批一体听起来很简单&#xff0c;但内涵却十分复杂。它包含了计算语义、编程模型、API、调度、执行、shuf…

html+css+js网页制作 京东首页官网 ui还原度100%

htmlcssjs网页制作 京东首页官网 ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 …

微服务系列:Spring Cloud 之 Feign、Ribbon、Hystrix 三者超时时间配置

Feign 自身有超时时间配置 Feign 默认集成的 Ribbon 中也有超时时间配置 假如我们又使用了 Hystrix 来实现熔断降级&#xff0c;Hystrix 自身也有一个超时时间配置 注: spring-cloud-starter-openfeign 低一点的版本中默认集成的有 Hystrix&#xff0c;高版本中又移除了。 …

x264 编码器 SSIM 算法源码分析

SSIM SSIM(Structural Similarity Index)是一种用于衡量两幅图像之间视觉相似度的指标。它不仅考虑了图像的亮度、对比度和饱和度,还考虑了图像的结构信息。SSIM的值介于-1到1之间,值越接近1表示两幅图像越相似。 SSIM是基于以下三个方面来计算的: 亮度(Luminance):比…

MLM之GPT-4o:在GPT-4o的806版本的 API 中引入结构化输出—可以可靠地遵循开发人员提供的 JSON 模式

MLM之GPT-4o&#xff1a;在GPT-4o的806版本的 API 中引入结构化输出—可以可靠地遵循开发人员提供的 JSON 模式 导读&#xff1a;2024年8月6日&#xff0c;OpenAI推出了新的API功能"结构化输出"&#xff0c;旨在更好地帮助人们理解和与大型语言模型的输出进行交互。这…

Linux系统编程(10)线程资源回收和互斥锁

一、pthread_cancel函数 pthread_cancel 函数用于请求取消一个线程。当调用 pthread_cancel 时&#xff0c;它会向指定的线程发送一个取消请求。 #include <pthread.h>int pthread_cancel(pthread_t thread);thread&#xff1a;要发送取消请求的线程标识符。 成功时&a…

Dify 开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问

目录 ⛳️推荐 前言 1. Docker部署Dify 2. 本地访问Dify 3. Ubuntu安装Cpolar 4. 配置公网地址 5. 远程访问 6. 固定Cpolar公网地址 7. 固定地址访问 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享…

Javascript反调试实现判断用户是否打开了浏览器控制台

前言 晓杰最近在研究如何防止用户恶意调试前端网页代码&#xff0c;防止打开控制台进行调试&#xff0c;首先禁用了浏览器页面右键事件和F12等快捷键&#xff01;然后利用了创建元素是否成功方式进行校验,具体实现代码如下。 代码 document.addEventListener(keydown, functi…

(贪心) LeetCode 376. 摆动序列

原题链接 一. 题目描述 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7, 4, 9, 2,…

【LeetCode每日一题】——623.在二叉树中增加一行

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 广度优先遍历 二【题目难度】 中等 三【题目编号】 623.在二叉树中增加一行 四【题目描述】…

【每日刷题】Day100

【每日刷题】Day100 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 【模板】堆_牛客题霸_牛客网 (nowcoder.com) 2. 【模板】链表_牛客题霸_牛客网 (nowcoder.com) 3…

红酒与旅游攻略:旅行途中的风味之选

在旅行的道路上&#xff0c;我们总是渴望寻找那些能够触动心灵、留下深刻记忆的不同体验。而红酒&#xff0c;作为一种充满韵味和故事的饮品&#xff0c;无疑是旅行途中的风味之选。洒派红酒&#xff08;Bold & Generous&#xff09;&#xff0c;这款定制红酒&#xff0c;以…

【公式推导】Elucidating the Design Space of Diffusion-Based Generative Models 【论文精读】

Elucidating the Design Space of Diffusion-Based Generative Models 论文精读 关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 【更新中】EDM论文精读 论文链接 &#xff08;1&#xff09;论文&#xff1a;Elucidating the Design Space of Diffusion-Base…