深入浅出带你学习无参RCE

news2024/9/23 21:26:30

前言

无参RCE,顾名思义就是当我们不能传入参数的情况下进行命令执行,因为一般情况下命令执行必须是要含有参数的,本文会就着无参RCE问题带大家学习CTF中常见的无参RCE方式及用法,下面我们展开文章来讲解一下。

基础知识

首先我们要了解,什么时候才会考虑无参RCE这种方法,我们先看下面的代码:

<?php
	if(';' === preg_replace('/[a-z,_]+((?R)?)/', NULL, $_GET['exp']){
 		 eval($_GET['exp']);
	}
?> 

简单分析一下代码里面的含义,首先让我们通过GET方式传入exp,之后会进行匹配,若我们传入的值带(),那么会被替换成空,同时正则表达式是递归调用的,我们传入的值会随着匹配次数慢慢变短。

了解了以上知识,我们来学习一下如何绕过吧。

getallheaders()

这个函数根据菜鸟教程里的解释可以理解为包含当前请求所有头信息的数组,当我们传入这个函数后,可以查看回显:

可以看到我们header头信息确实一数组的形式打印出来了,但是数组我们是不能用的,所以要想办法找到可以转换数组的函数,这里也有好几种方法,这里就简单说一下:

impload

该函数将一维数组的值转换成连续的字符串,这里我们就有思路了,因为上面函数是转换报文头为数组,而这个则是讲数组转换成字符串,这不就完美绕过了,只需在报文最后加上恶意代码即可。

end

该函数作用是取出数组的最后一位,以字符串形式返回,可以想到,我们也可以利用这个函数,我们可以用输出函数里包裹这个,只需放在保温最前面或者最后面即可。

get_defined_vars()

根据菜鸟教程里的解释,该函数也是返回所有一定义变量的数组,需要注意的是返回的是一个二维数组,那么我们上面的方法就不能用了,下面介绍一个新的函数current(),该函数可以返回数组中的单元且初始指针指向数组的第一个单元,正好是GET方式传入的第一个元素我们就可以用这个函数先转换成一维数组,在进行POC的构造:

?exp=eval(end(current(get_defined_vars())));&shell=phpinfo(); 

session_id()

这个方法就跟上面的不太一样了,我们需要将恶意代码卸载cookie的phpsession里,然后通过这个来进行读取,可能有一些抽象,一会会进行演示

我们要先知道必须得先开启session才可以使用该方法,我们常用的payload如下:

hex2bin(session_id(session_start())); 

因为session里面的值不能直接传入,这里要加一步16禁止编码才行得通:

于是我们最终的payload如下:

?exp=eval(hex2bin(session_id(session_start()))); 

其中hex2bin为16进制解码的函数,因为我们之前进行了一次16进制的编码,这里不要忘记了。

例题

题目源码如下:

可以大体的看到分为三关,需要我们分别绕过,首先我们要知道flag文件叫什么,localeconv()函数能够返回包含本地数字及货币格式信息的数组,该数组的第一个元素就是’ . ',我们需要通过

scandir('.') 

来查看当前目录文件,既然localeconv函数可以返回数组且第一个元素为我们想要的,所以结合前面知识构造:

?exp=var_dump(scandir(current(localeconv()))); 

得知flag在flag.php里,接下来考虑如何构造,因为数组索引为3,这里考虑通过next函数配合array_reverses来讲数组倒序,配合高亮函数来进行解题:

?exp=highlight_file(next(array_reverse(scandir(current(localeconv()))))); 

最终得到flag。

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

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

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

相关文章

Revit剖面操作:怎么做折线剖面和快速剖面

一、Revit中如何做折线剖面 在绘图过程中&#xff0c;有时候根据实际情况需要绘制折线剖面&#xff0c;这里就简单介绍一些折线剖面的绘制方法。 1、选择视图选项卡中“剖面”绘制剖面&#xff0c;如图1所示。 2、选中“剖面”&#xff0c;点击右上角“拆分线段”&#xff0c;如…

ctf-show-misc-游戏题

目录前言Misc22超级玛丽魂斗罗游戏flag 终结篇加油各位( •̀ ω •́ )y 期待与君再相逢前言首先感谢ctf平台和出题的大佬其次感谢各位读者&#xff0c;对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我本次出了一个专题&#xff0c;就是游戏专题 把所以关于游戏杂项的…

如何提高自动化测试覆盖率

自动化测试一直是测试人员的核心技能&#xff0c;也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下&#xff0c;各大企业对测试人员的技术水平要求的很高&#xff0c;而测试人员的技术水平主要集中在三大自动化测试领域&#xff0c;再加测试辅助脚本的编写&#…

关于 DataLeap 中的 Notebook,你想知道的都在这

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品&#xff0c;帮助用户快速完成数据集成、开发、运维、治、资产、安全等全套数据中台建设&#xff…

java-spring_bean实例化

bean是如何创建的实例化bean的三种方式构造方法静态工厂&#xff08;了解&#xff09;实例工厂与FactoryBean实例工厂FactoryBeanbean是如何创建的实例化bean的三种方式 构造方法 bean本质上就是对象&#xff0c;创建bean使用构造方法完成 提供可访问的构造方法 public clas…

现实版“狂飙”上演,背后有哪些猫腻?

目录 披着电商外衣行洗黑钱之实 电商平台如何防范黑灰产作恶 最近热播的电视剧《狂飙》中有这样一个故事情节&#xff0c;刑满释放的唐小虎出狱之后&#xff0c;大哥高启强就大方的赠予唐小虎一家游戏厅。但其表面上是游戏厅&#xff0c;实际上背后却暗藏赌场。而在后来的剧情…

<<Java开发环境配置>>5-MySQL安装教程(绿色版)

一.MySQL绿色版安装: 1.直接解压下载的ZIP文件到对应的目录下(切记安装目录不要有中文); 如图:我的安装目录:D:Program Files 2.创建配置文件: 在MySQL安装目录下&#xff0c;创建一个my.ini配置文件&#xff0c;然后在里面添加以下内容&#xff08;别忘了MySQL安装目录要改成…

基于单片机的温度控制系统设计(32+WIFI+蓝牙版)-实物设计

编号&#xff1a;M22033-04M设计简介&#xff1a;基础功能&#xff1a;1、可以通过温度传感器检测温湿度2、可以通过按键设置温度阈值3、当温度超过阈值时&#xff0c;蜂鸣器报警扩展功能&#xff1a;1、通过蓝牙连接手机并通过手机实现监控2、通过WiFi连接手机并通过手机实现监…

程序员一般通过什么途径接私活?

判断私活是否靠谱的通用标准&#xff1a; 1.钱款是否有担保&#xff0c;能做到“钱和代码两清” 2.项目是否真实&#xff0c;需求文档清晰&#xff0c;结款时间一目了然 3.项目来源是否可靠&#xff0c;渠道是否正规接私活的途径主要包括&#xff1a; 1.熟人/朋友介绍。这样的…

transformer总结

1.注意力机制 意义&#xff1a;人类的注意力机制极大提高了信息处理的效率和准确性。 公式&#xff1a; 1)自注意力机制 b都是在考虑了所有a的情况下生成的。 以产生b1向量为例&#xff1a; 1.在a这个序列中&#xff0c;找到与a1相关的其他向量 2.每个向量与a1关联的程度&a…

网络编程套接字(上篇)UDP实现简易多人聊天室

目录 背景知识 主机间通信本质 socket 端口号特点&#xff1a; 为什么不用进程pid&#xff1f; 网络字节序 socket编程接口API sockaddr结构 ​编辑 简单UDP网络程序 了解UDP协议 简易多人聊天室实现 服务端代码&#xff1a; 客户端代码&#xff1a; 背景知识 主…

MySQL第六章第四次作业

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…

java切换版本等注意事项

启动java工具&#xff0c;命令行为&#xff1a;java -jar xxx.jar 注意burpsuite&#xff0c;behinder需要jdk&#xff0c;如果是这个例子&#xff0c;jdk-11.0.12&#xff0c;shiro_attack_2.2需要jdk版本jdk1.8.0_291。 jdk版本切换方式&#xff1a; 编辑&#xff5e;目录…

教育舆情监测关键词有哪些,TOOM教育舆情监测系统流程?

教育舆情监测是指对教育领域的舆情进行收集、分析和处理的过程。舆情是指公众在各种渠道上对教育政策、教育机构、教育事件等方面的言论、态度和情绪。通过对教育舆情的监测和分析&#xff0c;可以了解公众对教育行业的看法和反应&#xff0c;提高对教育行业的管控能力&#xf…

MFC入门

1.什么是MFC?全称是Microsoft Foundation Class Library&#xff0c;我们称微软基础类库。它封装了windows应用程序的各种API以及相关机制的C类库MFC是一个大的类库MFC是一个应用程序框架MFC类库常用的头文件afx.h-----将各种MFC头文件包含在内afxwin.h-------包含了各种MFC窗…

AcWing语法基础课笔记 第六章 C++中的函数

第六章 C中的函数 函数让代码变得更加简洁。 ——闫学灿 目录 1.函数基础 1.1编写函数 1.2调用函数 1.3形参和实参 1.4函数的形参列表 1.5函数返回类型 1.6局部变量、全局变量与静态变量 2.参数传递 传值参数​编辑 2.2传引用参数 2.3数组形参…

从事1年软件测试,只会功能测试,想进一步学习,有没有好的建议呢?

作为一个在软件测试领域奋斗10年的老人&#xff0c;我前8年先后在不同的互联网公司担任高级软件测试工程师&#xff0c;测试主管等职&#xff0c;所以这么多年下来&#xff0c;也算是身经百战&#xff0c;阅人无数了。 根据粉丝的提问&#xff0c;得到你当前的状态是1&#xf…

中国天气——低纬度和高纬度环流复习笔记

低纬度和高纬度环流 低纬度大气运动基本特征 中低纬度大气运动的差别 低纬度的地转参数f很小&#xff0c;天气尺度系统具有非地转特性&#xff0c;但吃到以外的行星尺度还是有准地转近似特性因此中纬度有效的气压场和温度场分析系统运动和变化的方法在低纬度不再适用&#x…

虚拟现实三维数字沙盘电子沙盘可视化交互开发教程第5课

虚拟现实三维数字沙盘电子沙盘可视化交互开发教程第5课 设置system.ini 如下内容 Server122.112.229.220 userGisTest Passwordchinamtouch.com 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 在鼠标指定的位置增加自己的UI对象&#xff1…

实现8086虚拟机(一)——基本框架

文章目录基本框架几点说明&#xff1a;在 实现8086汇编编译器&#xff08;四&#xff09;——生成可执行程序 一文中&#xff0c;我已经实现了一个编译器&#xff0c;可以将汇编语言汇编成二进制程序。这几篇文章来讲述如何实现虚拟机&#xff0c;也就是执行这个程序的“机器”…