RCE之无参数读取文件
什么是无参数?
顾名思义,就是只使用函数,且函数不能带有参数,这里有种种限制:比如我们选择的函数必须能接受其括号内函数的返回值;使用的函数规定必须参数为空或者为一个参数等
例题:
<?php
highlight_file(__FILE__);
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { eval($_GET['code']);
}
?>
代码解析:
preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])
preg_replace — 执行一个正则表达式的搜索和替换,\W为除了字母、下划线和数字之外的字符(与\w相反,即匹配所有字符),而^在方括号中,则表示不接受方括号中的字符集合。


(?R)?这个意思为递归整个匹配模式,即:

()被转义字符转移,所以要加上。
所有if判断里面的正则的含义就是匹配无参数的函数,内部可以无限嵌套相同的模式(无参数函数),将匹配的替换为空,判断剩下的是否只有;。所以这道题我们只能使用无参数的函数进行文件读取或者命令执行
解题思路:
第一步
首先使用无参数任意文件读取查看当前目录文件名
一般而言我们可以使用print_r(scandir('.'));可以用来查看当前目录所有文件名
print_r — 打印人们可读的变量信息。scandir — 列出指定路径中的文件和目录。

但因为'.'在函数中被过滤,所以我们要想该如何构造.。这里可以用到以下几个方法:
localeconv()
localeconv()返回一包含本地数字及货币格式信息的数组。而数组第一项就是.。
详情请见PHP: localeconv - 手动中例一。
然后我们如何取得这个.,这时我们就要用到另外一个函数current()

故而输入:?code=print_r(scandir(current(localeconv())));

得到当前目录下的文件,其中的flag.php就是我们需要得到的文件
获取.的方法有很多,大佬有其他思路可以评论区交流【doge】
注:如果current()可以使用别名pos();或者另外一个函数reset(),该函数返回数组第一个单元的值
第二步
读取目标文件
首先我们先来介绍以下几个函数:
show_source — 别名 highlight_file()

array_rand — 从数组中随机取出一个或多个随机键

array_flip — 交换数组中的键和值

在第一步中——(scandir(current(localeconv())))将文件目录列出,array_flip把键与值交换,array_rand随机取出一个或多个值,show_source返回文件的代码,所以:
输入:?code=show_source(array_rand(array_flip(scandir(current(localeconv())))));

因为array_rand是随机取出一个,所以第一次没有取出,我们可以多刷新几次。
至此我们的RCE无参数读取文件到这里就结束了,不仅第一步有许多方法,第二步同样有,如:因为flag文件在倒数第二位,我们可以利用next与array_reverse做一个新数组,其他各种等着各位发掘,谢谢观看!!
相关文章:
RCE之无参数读取文件
什么是无参数? 顾名思义,就是只使用函数,且函数不能带有参数,这里有种种限制:比如我们选择的函数必须能接受其括号内函数的返回值;使用的函数规定必须参数为空或者为一个参数等 例题: <?…...
Python GUI开发必看:Tkinter Button控件使用详解
Button(按钮)组件用于实现各种各样的按钮。 Button组件可以包含文本或图像,你可以将一个Python的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。 Button组件仅能显示单一字体的文本,…...
上海市计算机学会竞赛平台2024年7月月赛丙组得分排名
题目描述 给定 nn 名学生的考试得分,这些学生的学号为 11 到 nn,其第 ii 号学生的得分为 aiai,请将这些学生按照分数从大到小的顺序排列并输出学号序列。 若两个学生得分相同,则先输出较小的学号。 输入格式 第一行…...
Can GPT-3 Perform Statutory Reasoning?
文章目录 题目摘要相关工作SARAGPT-3 对美国法典的了解GPT-3 在对合成法规进行简单推理时遇到困难结论 题目 GPT-3 可以进行法定推理吗? 论文地址:https://arxiv.org/abs/2302.06100 摘要 法定推理是用事实和法规进行推理的任务,法规是立法机…...
redis面试(十一)锁超时
boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); RedissonLock里面有这样一个方法tryLock(),意思是尝试获取锁的结果。 最大等待时间100s,并且获取到锁之后,10s之内没有释放的话,锁会自动失效。 尝试获取锁超时 time …...
C代码做底层及Matlab_SimuLink做应用层设计单片机程序
前言:SimuLink工具极其强大,但是能直接支持单片机自主开发的很少,造成这个问题的原因主要是我们使用的芯片底层多是C代码工程,芯片厂家也只提供C代码库,很少能提供SimuLink的支持库,即使提供也不是很不完善,如NXP的一些芯片提供的SimuLink库不含盖高级应用,再比如意法半…...
Cloud Kernel SIG 月度动态:ANCK OOT 驱动基线更新,发布 2 个 ANCK 版本
Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。 01 SIG 整体进展 1. 发布 ANCK 5.10-016.4 小版本。 2. 发布 ANCK 5.10-017.1 小版本。 3. ANCK 新增海光平…...
vue3仿飞书头像,根据不同名称生成不同的头像背景色
效果展示: 传递三个参数: name:要显示的名称;size:头像的大小;cutNum:分割当前名称的最后几位数; 代码如下: <template><div:style"{color: #fff,borde…...
SpringBoot整合三方
SpringBoot整合redis 引入redis依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>redis.clients</groupId&g…...
React之组件的使用
Vue、React和Angular是三个流行的前端框架,采用组件化的开发方式。支持虚拟DOM(Virtual DOM)技术,有丰富的生态系统、大量的插件和工具可以使用。Vue的语法是传统的HTML和JavaScript,React使用JSX语法,Angu…...
深度学习--长短期记忆网络
1.引入 RNN 可以将以前的信息与当前的信息进行连接。例如,在视频中,可以用前面的帧来 帮助理解当前帧的内容;在文本中,可以用前面半句话的内容来预测后面的内容。但是, RNN 存在一个记忆消失的问题。例如,…...
研0 冲刺算法竞赛 day29 P2249 【深基13.例1】查找
P2249 【深基13.例1】查找 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: ①二分查找 ②stl函数:lower_bound(a.begin(),a.end(),x) 返回第一个大于等于 x的数的地址 代码: #include<iostream> #include<algorithm> …...
基于vue框架的CKD电子病历系统nfa2e(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:患者,医生,药品信息,电子病历,临时医嘱,长期医嘱,健康科普 开题报告内容 基于Vue框架的CKD电子病历系统 开题报告 一、选题背景 随着信息技术的飞速发展和医疗信息化的深入推进,电子病历系统(Electronic Medic…...
笔记:python 安装tar包报错
报错信息 ERROR: Could not find a version that satisfies the requirement setuptools>40.8.0 (from versions: none)ERROR: No matching distribution found for setuptools>40.8.0分析 1,当前已安装 setuptools 并且版本超过40.8.0 解决方案 缺包了&am…...
575. 分糖果
哈喽!大家好,我是奇哥,一位专门给面试官添堵的职业面试员 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟! 文章目录 一、题目二、答案三、总结 一、题目 …...
手机电量消耗分析工具 Battery Historian 指南
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中 电量 的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、安装Battery Historian二、收集Batterystats 数据三、使用B…...
笔试练习day4
目录 WY22 Fibonacci数列题目解析解法暴力解法贪心代码 NC242 单词搜索题目解析例子1解析例子2解析例子3解析解法深度优先遍历dfs实现最终代码 BC140 杨辉三角解法线性dp问题代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒&am…...
公主少爷都爱看的haproxy七层代理详细介绍及常见实验详解
目录 一、负载均衡 1.1什么是负载均衡 1.2为什么要实验负载均衡 1.3四层负载均衡 1.4七层负载均衡 1.5四层负载均衡和七层负载均衡的对比 二、什么是haproxy 2.1定义 2. 2功能和特点 2.3应用场景 2.4haproxy的分类 三、安装及基本配置的信息 3.1软件的安装 3.2ha…...
Android笔试面试题AI答之Kotlin(6)
文章目录 24. 以下代码执行的结果是什么?25. 解释一下下述Kotlin 代码有什么问题?26. 如何在 Kotlin 中创建常量?示例注意事项总结 27. Koltin 可以互换使用 IntArray 和 Kotlin 中的 Array 吗?IntArrayArray<Int>互换使用从…...
“tcp控制协议”的理解
情景解释: 1.过程: 在用户进行网络间通信时,不管是客户端还是服务端,都会有两个缓冲区——发送缓冲区和接受缓冲区。 通过4个缓冲区进行数据交流。 用户通过write()将数据发送到他的发送缓冲区中,再传输到服务端的…...
3DGS新手避坑指南:COLMAP命令行参数选错,你的Gaussian Splatting训练就白费了
3DGS新手避坑指南:COLMAP参数选择对Gaussian Splatting训练的关键影响 当你第一次接触3D Gaussian Splatting(3DGS)时,可能会被COLMAP预处理环节的各种参数搞得晕头转向。明明按照教程一步步操作,最后生成的3D模型却支…...
微信QQ防撤回终极方案:3分钟搞定消息永久保存
微信QQ防撤回终极方案:3分钟搞定消息永久保存 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHub…...
深入芯片布线底层:聊聊ICC II里那些容易被忽略的“小”设置,比如Secondary PG、Via Ladder和天线效应
深入芯片布线底层:ICC II中那些影响性能与良率的隐藏配置 在芯片物理实现的最后阶段,布线工程师往往将注意力集中在时序收敛和DRC修复上,却容易忽略工具中那些看似次要却实际影响深远的配置项。本文将聚焦ICC II布线流程中四个关键但常被低估…...
新手福音:通过快马生成的示例项目,轻松上手豆包开放平台第一个AI调用
今天想和大家分享一个特别适合新手入门豆包开放平台的小项目——用快马生成的"天气查询助手"。作为一个刚接触API开发的小白,我发现这种方式真的能快速理解整个调用流程,而且完全不需要从零开始写代码。 项目背景与功能设计 这个天气查询助手…...
收藏!AI风口来袭,程序员必学大模型,薪资翻倍不是梦!
本文介绍了AI大模型应用开发的巨大机遇,适合想转行或提升技能的程序员。文章指出,掌握AI大模型、RAG、Prompt等技术,不仅能获得高薪工作,还能提升个人竞争力。作者提供了完整的学习资料和路线图,帮助读者快速入门&…...
别再只写Prompt了!用Cursor Skills给你的AI助手装上‘前端设计说明书’
别再只写Prompt了!用Cursor Skills给你的AI助手装上‘前端设计说明书’ 作为一名长期与AI代码生成工具打交道的前端开发者,我深刻理解那种面对千篇一律的"AI感"设计时的无奈。每次都要花费大量时间编写冗长的Prompt,结果生成的代码…...
AI 浪潮下,传统程序员的转型之路:2026 年大模型领域热门岗位与突围策略
在技术日新月异的当下,程序员群体时常面临职业发展的十字路口。随着行业竞争加剧、技术迭代加速,不少程序员开始思考转行的可能性。那么,在 2026 年,有哪些转行方向值得程序员们考虑呢?本文将为你详细剖析。 一、八大…...
基于Arduino-ESP32的嵌入式车牌识别系统:从问题到落地的全流程实现
基于Arduino-ESP32的嵌入式车牌识别系统:从问题到落地的全流程实现 【免费下载链接】arduino-esp32 Arduino core for the ESP32 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 一、问题发现:嵌入式环境下的车牌识别挑战 智能…...
OpCore-Simplify智能配置工具:让系统环境适配不再复杂
OpCore-Simplify智能配置工具:让系统环境适配不再复杂 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当技术爱好者小张第三次尝试配置系统…...
ai辅助开发新体验:在快马平台上打造会思考的智能成片ppt生成网站
最近在做一个智能PPT生成网站的项目,发现结合AI辅助开发真的能带来不少惊喜。今天就来分享一下如何利用InsCode(快马)平台快速实现一个会思考的PPT生成工具。 项目背景与核心功能 传统PPT制作需要手动整理内容、设计版式,整个过程耗时费力。而智能PPT生成…...
