漏洞文件:/Application/Weibo/Controller/IndexController.class.php
public function uploadMyExp(){ $flag=1; $uid=is_login(); $mycollection='mycollection'; $config = array( 'maxSize' => 5*1024*1024, 'rootPath' => './Uploads/', 'savePath' => 'Expression/'.$mycollection.'/', 'saveName' => '', 'exts' => array('jpg', 'gif','png','jpeg'), 'autoSub' => true, 'subName' => '', 'replace' => true, ); if($_FILES['file']['size']<5*1024||$_FILES['file']['size']> 5*1024*1024){ echo json_encode('-3'); $flag=0; } $upload = new pload($config); // êμày»ˉéÏ′«àà $info = $upload->upload($_FILES); if (!$info) { // éÏ′«′íÎóìáê¾′íÎóDÅÏ¢ echo json_encode('-1'); $flag=0; }
获取当前登录的uid,然后获取上传的FILES进入upload
正常的一个流程
这里有一个check检测,跟进
对后缀进行了检测.所以我们得必须满足后面.jpg这个条件
文件名的控制
当saveName为空时则true并截取我们上传的文件名
最后则是检测后缀还有MIME类型,true则进入uplandfie.复现
为了方便我var_dump了出来
成功上传
任意文件删除:
$name=I('post.name','','op_t'); $allname=substr($name,strrpos($name,'/')+1,strlen($name)-strrpos($name,'/')-1); // $iname=substr($allname,0,strrpos($allname,'.')); $rp= $this-> ROOT_PATH = str_replace('/Application/Weibo/Controller/IndexController.class.php', '', str_replace('/', '/', __FILE__)); $path = $rp."/Uploads/Expression/" ; if(!file_exists($path.$mycollection)){ mkdir($path.$mycollection,0777,true); } $path0=$rp.'/Uploads/Expression/'.$mycollection.'/'.$allname; $file=file_get_contents($path0); $map['md5']=md5($file); $iexp_id=$iexpression->where($map)->getField('id'); if($iexp_id){ $map1['iexpression_id']=$iexp_id; $map1['uid']=$uid; $res=$iexplog->where($map1)->select(); if($res){ echo json_encode('0'); $iexp_path=$iexpression->where($map)->getField('path'); if($iexp_path!="/Uploads/Expression/".$mycollection.'/'.$allname) { unlink($path0); }
Post获取name并进入了op_t函数
可以看见这是针对安全过滤,并没有针对路径跳转过滤
然后进行截取,很简单的就可以绕过的一种截取
这里就很狗血的一段了!进入数据库查询当查询出来的内容与我们输入的内容不符合的时候则删除不符合内容
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论