虽舵长吧拴桐汝工瓷猴顽纽订
eval()与create_function()
一、eval()
1.eval()函数把字符串按照 PHP 代码来计算
2.该字符串必须是合法的 PHP 代码,且必须以分号结尾
3.如果没有在代码字符串中调用 return 语句,则返回 NULL
4.如果代码中存在解析错误,则 eval() 函数返回 false
5.该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用
二、create_function(‘参数’,’函数体代码’):创建匿名函数
新建demo3.php
<?php echo 4+5; echo "<hr>"; //使用eval()函数来执行字符串方式一 eval('echo 4+5;'); echo "<hr>"; //使用eval()函数来执行字符串方式二 echo eval('return 4+5;'); //两种方式的区别 echo "<hr>"; //没有在代码字符串中调用 return 语句,则返回 NULL var_dump(eval('echo 4+5;')); echo "<hr>"; var_dump(eval('return 4+5;'));
执行:
eval()注入攻击演示
<?php //eval()注入攻击演示 //如果当前的url中存在p,则将参数p的值作为语句来执行,不存在,则返回null isset($_GET['p'])?eval($_GET['p']):null;
执行:http://www.myphp.cn/16/demo3.php?p=phpinfo();
注入成功
执行:http://www.myphp.cn/16/demo3.php?p=echo “你好!”;
还可以进行弹窗等等操作
二、create_function(‘参数’,’函数体代码’):创建匿名函数
<?php //匿名函数 $sum=function($a,$b)//函数表达式 { return $a+$b; }; echo $sum(5,6); echo "<hr>"; //下方的方式已被舍弃,使用上面的方式即可 $sum2=create_function('$a,$b','return $a+$b;'); echo $sum2(5,6);
执行:
螺径倒吞寿擞蹿冲儡儡菲偏坏