[PWNHUB 公开赛 2018]傻 fufu 的工作日

发布时间:2026/6/18 12:26:55

[PWNHUB 公开赛 2018]傻 fufu 的工作日 先扫下目录得到index.php.bak这是份加密的源代码网上找到解密方法解密源码上有个UploadFile.class.php访问打不开 尝试bak后缀的文件 得到备份文件得到过滤的规则漏洞问题在if(!in_array($filename[count($filename)-1], $this-allow_ext)) {return $this-error(只允许上传图片文件);}// 用.分割文件名只保留首尾两个字符串防御Apache解析漏洞$origin_name current($filename);$ext end($filename);$new_name ($this-new_name ? $this-new_name : $origin_name) . . . $ext;$target_fullpath $this-dist_path . DIRECTORY_SEPARATOR . $new_name;filename[count($filename)-1]$ext end($filename)count($filename) 计算的是元素个数这里有两个元素所以结果是 2。2 - 1 1。$filename[1] 是在按“键名”取值。因为这个数组里确实存在键名 1对应的值就是 jpg。结论这种写法等价于 $filename[1]它取的是键名为 1 的值与元素是否排在最后毫无关系。end() 函数忽略键名只关注数组内部的“指针位置”。PHP 数组会记住元素添加的先后顺序。你的数组是先塞入了 jpg键1后塞入了 php键0。end() 将内部指针指向最后插入的那个元素也就是后塞入的 php。结论end() 取的是插入顺序的最后一个与键名数字大小无关先传filename[1]jpg再传filename[0]php得到php为文件后缀解密方法PHPJiaMi 免扩展加密分析及解密 - vsalw

相关新闻