6.文件首尾加空绕过
源码给出这样的,发现文件名处理没有首尾去空,于是我们可以采用首尾加空的方式绕过。
$file_name = $_FILES['upload_file']['name'];
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
简单思路:开启BP拦截,上传info.php文件,拦截成功后文件名info.php后面加个空格即可。
复制图像地址访问如图,即上传成功。
7.文件末尾加点绕过
给出的源码并没有文件末尾去点的处理,于是我们可以通过文件名后缀加点来绕过。
$file_name = trim($_FILES['upload_file']['name']);
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空
简单思路:开启BP拦截,上传info.php文件,BP拦截修改info.php为info.php.
复制图片地址访问如图,即成功上传。
8.文件末尾加字符串::$DATA绕过
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = trim($file_ext); //首尾去空
发现源码没有删除字符串::$DATA操作,可以通过这个绕过。
同理,拦截时修改,复制图片地址访问,即成功上传。(注意:访问时::$data要删掉才能访问。)