ps制作网站首页,嵌入式工程师能干多久,对于网站界面,仿站酷网站模板可变函数
看可变函数的知识点之前#xff0c;蒟蒻博主建议你先去看看php的可变变量#xff0c;会更加方便理解#xff0c;在本篇博客中的第五块知识点-php基础学习之变量-CSDN博客 描述 当一个变量所保存的值刚好是一个函数的名字#xff08;由函数命名规则可知该值必…可变函数
看可变函数的知识点之前蒟蒻博主建议你先去看看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函数 asystemcmd$_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函数会接收这三个参数并利用可变函数的语法对传入的运算函数实现回调