当前位置: 首页 > wzjs >正文

企业网站留言十大嵌入式培训机构

企业网站留言,十大嵌入式培训机构,ftp服务器,烟台建站软件一、分析源代码// 初始化上传状态和消息变量 $is_upload false; $msg null;// 检查是否有文件上传 if(!empty($_FILES[upload_file])){// 允许上传的MIME类型数组$allow_type array(image/jpeg,image/png,image/gif);// 验证上传文件的MIME类型是否允许if(!in_array($_FILES…

一、分析源代码

// 初始化上传状态和消息变量
$is_upload = false;
$msg = null;// 检查是否有文件上传
if(!empty($_FILES['upload_file'])){// 允许上传的MIME类型数组$allow_type = array('image/jpeg','image/png','image/gif');// 验证上传文件的MIME类型是否允许if(!in_array($_FILES['upload_file']['type'],$allow_type)){$msg = "禁止上传该类型文件!";}else{// 获取保存的文件名,如果用户未指定则使用原文件名$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];// 将文件名转换为小写并分割成数组(处理可能的多级扩展名)if (!is_array($file)) {$file = explode('.', strtolower($file));}// 获取文件扩展名$ext = end($file);// 允许的文件后缀名数组$allow_suffix = array('jpg','png','gif');// 验证文件后缀名是否允许if (!in_array($ext, $allow_suffix)) {$msg = "禁止上传该后缀文件!";}else{// 重新组合文件名(保留原始文件名和扩展名)$file_name = reset($file) . '.' . $file[count($file) - 1];// 获取临时文件路径$temp_file = $_FILES['upload_file']['tmp_name'];// 构建上传后的文件完整路径$img_path = UPLOAD_PATH . '/' .$file_name;// 将临时文件移动到指定上传目录if (move_uploaded_file($temp_file, $img_path)) {$msg = "文件上传成功!";$is_upload = true;  // 标记上传成功} else {$msg = "文件上传失败!";}}}
}else{$msg = "请选择要上传的文件!";
}

 这里首先做了一个MIME类型检测,然后将保存的文件名分割成数组,进行白名单验证。

explode()函数将文件名拆分成数组,假设上传文件是xx.php.jpg,被拆分为:

Array
([0] => xx[1] => php[2] => jpg
)

 end()函数用来获取最后一个元素的值,进行后缀名检查。这里获取是jpg,通过白名单验证,进入下一步。

重新组合文件名,reset()函数返回第一个元素的值,“.”用来拼接,count()函数是统计元素个数,$file[count($file) - 1]是获取最后一个元素。举例,这里文件名被拆分为包含三个元素的数组,所以count($file)为3,也就是$file[2],索引从0开始,$file[2]就是第三位的“jpg”。重新组合的文件名就成为“xx.jpg”。

接下来再构建路径并转移上传。

二、解题思路

缺陷存在于数组拆分重组这一步,因为数组中的元素是可以构造的。

Array
([0] => xx.php[1] => (空)[2] => jpg
)

将第二个元素构造为空,end()函数获取第三个元素的值jpg,通过白名单验证。进入重新组合文件名:

$file_name = reset($file) . '.' . $file[count($file) - 1];

 这一步是关键所在,reset()函数获取第一个元素的值xx.php,而count()函数计算数组中只有2个元素,所以$file[count($file) - 1]索引的位置是$file[1],也就是第二个元素的值。最后拼接,变成了“xx.php.(空)”,由于windows系统的特性会删除文件名末尾的句点(.),最终文件被服务器保存为xx.php。

三、解题步骤

1.上传木马,利用bp抓包,先修改一下MIME类型,改成image/png。

2.构造数组。

3.提示文件上传成功,被保存为php文件。

http://www.dtcms.com/wzjs/51785.html

相关文章:

  • 网站规划步骤有哪些在线crm管理系统
  • 国外网站打不开怎么解决推广软件app
  • 网站建设都是用什么软件搜索网站大全
  • 计算机网站开发参考文献seo干什么
  • 有没有做旅游攻略的网站网站推广的基本手段有哪些
  • 郑州做营销型网站外贸b2b平台都有哪些网站
  • 吉林省 网站建设全网营销系统怎么样
  • 怎么建立一个文档家庭优化大师
  • 做公司网站需要提供的资料搜索引擎排名优化建议
  • 用eclipse做网站模板公司网站设计要多少钱
  • 云南网站的设计公司怎么进行网络营销
  • 网站建设 落地页舆情网站直接打开
  • wordpress做论坛网站seo优化服务是什么意思
  • wordpress更换域名301惠州短视频seo
  • 日本男女做受网站如何做网页制作
  • wordpress 用户站点制作链接的app的软件
  • 有一个做ppt的网站目前推广平台都有哪些
  • 长春建站免费模板网络营销成功的案例及其原因
  • 做门名片设计网站自媒体营销
  • 网站计费系统怎么做杭州网络推广公司
  • 企业网站 seo怎么做微信上如何投放广告
  • 公司网站设计解决方案彼亿营销
  • 台湾做的h游戏下载网站有哪些浏览器观看b站视频的最佳设置
  • 用jsp做的网站在不同浏览器显示效果差异很大如何解决网站关键词快速排名软件
  • html5网站后台怎么做佛山seo网站排名
  • 七牛视频wordpress长沙seo服务哪个公司好
  • wordpress 谷歌收录超级seo助手
  • 西宁思帽网站建设东莞网站seo优化
  • 高级网页设计师证朔州seo
  • 个人电脑建立网站会中文域名查询官网