有关PHP的可变函数
事情的起因是这样子的,最近看到一道题,问的是
<?php $_POST['a']($_POST['b']);?>
这句代码有什么问题,答案很明显因为PHP的可变函数这个特性,导致了任意代码执行,但是当时做实验的时候构造的a=eval&b=phpinfo()却返回了如下的结果
提示eval是个未定义的函数,然后改用了a=assert&b=phpinfo()却能执行成功,为此查了PHP的手册,有关可变函数的部分:
【
PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
】
这么看来eval其实并不能算是‘函数’,而是PHP自身的语言结构,如果需要用‘可变’的方式调用,需要自己构造,类似这样子的:
<?php
function eval_1($str)
{eval($str);
}$a='eval_1';
$a('phpinfo()');
?>
转载于:https://www.cnblogs.com/debugzer0/p/4858715.html
有关PHP的可变函数相关推荐
- PHP中可变变量和php可变函数到底有什么用?
什么是可变变量? PHP提供了一种其他类型的变量--可变变量.可变变量允许我们动态地改变一个变量的名称. 可以看到,在这方面,PHP具有非常大的自由度--所有的语言都允许改变变量的值,但是并没有太多的 ...
- php的可变函数,php之可变函数的实例详解
php之可变函数的实例详解 php的可变函数,今天大概的了解下,是看php手册总结的,觉得用处不大: PHP 支持可变函数的概念.这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数, ...
- php可变函数代码,PHP可变函数
PHP支持可变函数的概念.通常用在回调函数.函数列表或者根据动态参数来调用不同的函数. 那么如何使用呢? #定义三个函数 function apple() { echo "I'm an ap ...
- PHP的学习--可变函数
PHP 支持可变函数的概念.这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它.可变函数可以用来实现包括回调函数,函数表在内的一些用途. 可变函数不能用于例如 ech ...
- 浅谈C语言参数可变函数的实现
1.需要的头文件:stdarg.h 需要的宏:va_start(a,b) va_arg(a,b) va_end(a) 需要的类型别名: va_list 2.基本用法 (1)写函 ...
- PHP 可变函数经典用法
<?phpfunction map($fun, $list,$params=array()){$acc=NULL;$last=array_push($params, NULL,$acc)-1;f ...
- mysql不定参数函数_可变参数函数(一)
一个函数可以接受不定数的参数个数,这就是可变参数函数,比较常见的比如printf(),scanf(): printf(const char*format,-); printf("%d&quo ...
- 编写可变参数函数 c语言,C语言可变参数函数的编写
1. 引言 C语言我们接触的第一个库函数是 printf("hello,world!");其参数个数为1个. 然后,我们会接触到诸如: printf("a=%d,b=%s ...
- C/C++可变参数函数
一.C可变参数函数 一般我们编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的实际参数.但在某些情况下我们希望函数的参数个数可以根据需要确定,因此c语言引入可变参数函数. ...
- php函数的默认值,php函数指定默认值方法的小例子
php函数指定默认值方法的小例子 本节内容: php函数指定默认值 在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替. 例1, 复制代码 代码如下: ...
最新文章
- TensorRT Samples: MNIST API
- 用shell脚本计算日期的小函数们
- Host is not allowed to connect to this MySQL server解决方法
- cordova 实现网页缓存_如何解决ionic,cordova混合开发的app缓存大的问题
- Javascript 模块化指北
- MaxCompute使用常见问题总结
- 调整窗口大小时进行页面刷新(设定定时器)
- 吊打6599元的三星?买手机莫慌 三款国产新手机将发
- Weka算法Classifier-tree-J48源代码分析(一个)基本数据结构和算法
- MyBatis解析<if>动态sql时,Integer类型值为0,返回false
- robotframework 图片校验
- 虚拟机Linux忘记root密码的解决办法
- 中文语音合成综合评测一(可懂度)
- 购买了虚拟主机还要云服务器,购买了虚拟主机还要云服务器
- 数据中心服务器机柜电气参数,数据中心服务器机柜一些安装与参数
- ife2018 零基础学院 day 3
- ubuntu安装与卸载搜狗输入法
- 大姨妈的由来【摘字古书】
- 智慧医疗读书笔记(1-2)
- SharePoint BI