您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
php代码审计-动态函数执行与匿名函数执行
发布时间:2016-12-18 15:36:44编辑:雪饮阅读()
动态函数执行漏洞:
<?php
function a(){
echo "a";
}
function b(){
echo "b";
}
function c($c){
echo "c";
$c();
}
c($_GET['c']);
?>
访问:
匿名函数执行漏洞:
<?php
$a=$_GET['c'];
$lambda=create_function('$a,$b','return (strlen($a)-strlen($b)+'."strlen($a));");
?>访问:
匿名函数漏洞解析:
由于访问中有参数"}"和参数"//"而参数"}"会将匿名函数体部分结束掉,再结束掉后又有了"phpinfo()",但由于匿名函数的创建自身就在末尾有一个“}”来将函数体结束掉,所以才要传入"//"注释掉末尾的“}”
那么在注入前:
$lambda=function(){函数体}
注入后:
$lambda=function(){
函数体;
}
phpinfo();//}
原理:
由于匿名函数要执行是以()方式来执行的 ,而声明时是声明的函数体,需要将函数体关闭“}”后才能写执行代码(示例中用“//”注释了"}"然后写phpinfo()),相当于:
function aa(){
echo "aa";
}
phpinfo();
也就是说变成了两个语句了,一个声明,一个执行。
关键字词:php代码审计