位置: 编程技术 - 正文

PHP中危险的file_put_contents函数详解

编辑:rootadmin

前言

最近在EIS上遇到一道文件上传的题,发现过滤了<,这样基本很多姿势都无效了,想了很久没做出来这题,赛后才知道是利用数组来绕过, 这里分析了下原理,话不多说了,来一起看看详细的介绍吧。

来看下file_put_contents函数第二个参数data的官网定义:

可以看到,data参数可以是数组, 会自动做join('',$array)转换为字符串的

该函数访问文件时,遵循以下规则:

如果设置了 FILE_USE_INCLUDE_PATH,那么将检查 *filename* 副本的内置路径 如果文件不存在,将创建一个文件 打开文件 如果设置了 LOCK_EX,那么将锁定文件 如果设置了 FILE_APPEND,那么将移至文件末尾。否则,将会清除文件的内容 向文件中写入数据 关闭文件并对所有文件解锁 如果成功,该函数将返回写入文件中的字符数。如果失败,则返回 False。

但我们字符串过滤函数一般是用preg_match函数来过滤的,如:

我们知道,很多处理字符串的函数如果传入数组会出错返回NULL, 如strcmp,strlen,md5等, 但preg_match 函数出错返回false, 这里我们可以通过var_dump(preg_match('/</',$data)); 来验证, 这样的话,preg_match 的正则过滤就失效了

因此,猜测文件上传的代码是这样写的

于是我么可以传入content[]=<&#;php phpinfo();&#;>&ext=php 这样来绕过

修复方法

修复方法是使用fwrite 函数来代替危险的file_put_contents函数,fwrite函数只能传入字符串,如果是数组会出错返回false

总结

标签:

本文链接地址:https://www.jiuchutong.com/biancheng/274959.html 转载请保留说明!

上一篇:PHP回调函数概念与用法实例分析(php 回调函数)

下一篇:php实现的生成迷宫与迷宫寻址算法完整实例(php代码生成器)

  • 一般纳税人商品混凝土税率
  • 汇算清缴期间发生的计入当期损益吗
  • 可辨认净资产和所有者权益的区别
  • 快递费属于哪个商品编码
  • 股票分红会冲抵成本吗
  • 京东佣金费用计算公式
  • 扣缴义务人是否可以领税务发票,是否可以正常申报
  • 以库存现金付讫
  • 医院会计制度准则
  • 包装物押金是含税价格吗
  • 劳务派遣营改增政策
  • 营改增是什么时候提出的
  • 出差过程中招待员工
  • 未使用的固定资产提不提折旧
  • 收到建设方工程款怎么办
  • 法的分级
  • 公司注销时资本要交税吗
  • 5年内亏损弥补账务
  • 工会开票是否需要开户银行
  • 营改增对运输业的影响
  • 预缴的税款可以互抵吗
  • 减免增值税可以税前扣除吗
  • 银行存款余额调节表保管期限
  • 未达账项做完调节表后怎么处理?
  • 去办税大厅清卡需要带什么
  • 纳税所得额怎么算个税
  • 固定资产平均年限法公式
  • 工商年报社保需要多少钱
  • 个人劳务费怎么计算
  • 建筑业 分包
  • php获取文件列表并输出
  • 苹果7旧换新
  • 认缴注册是什么意思
  • 原材料按实际成本核算的会计处理
  • 应交所得税和所得税费用的区别计算公式
  • PHP中使用什么关键字声明变量的作用域为全局
  • 会计结账时账户余额为零
  • 记账凭证和会计分录的区别
  • 借款利息还能再算利息吗
  • 应收账款清查采用实地盘点法
  • 利润表里的所得税费用怎么算出来的
  • vuex使用步骤
  • 基建项目招标流程
  • react基础入门
  • 可供出售权益工具减值
  • 购买样品入库的账务处理
  • 银行日记账错误更正案例
  • 建筑施工企业收入怎么确认
  • 业务招待费的抵扣限额
  • 租房交付确认书
  • 期末汇兑损益的输入方式
  • 代扣代缴的增值税算进项税吗
  • 施工企业如何确定收入和成本
  • 水利建设基金筹集和使用管理办法
  • 增值税普通发票可以抵扣多少钱
  • 未达起征点可以申请一次性创业补贴吗
  • 商贸企业固定资产可以一次性扣除吗?
  • sql union和join区别
  • win8.1无法启动怎么办
  • lsass exe
  • ubuntu 12.04安装
  • xp系统与win7系统的电脑怎么组成局域网
  • rpm包安装位置
  • win8.1卸载软件在哪里
  • cocos2dx schedule
  • Unity3D-SLua+ProtocolBuffers构建说明
  • 超漂亮的38种刺绣图案
  • html lang属性
  • canvas基础
  • 安卓作业电量广播
  • python自带的gui
  • 国家税务总局票据丢失罚款标准
  • 空调设备税率多少钱
  • 单位自有住房免增值税吗
  • 网上报税失败什么原因
  • 税务局无编制人员工资
  • 新疆都有哪些地貌
  • 办理养殖照税务登记证
  • 新疆税务总局网站官网
  • 本期应纳的增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设