位置: 编程技术 - 正文

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代码生成器)

  • 建筑业固定资产折旧费用科目是什么
  • 外地多预交的税款申报时该怎么填写?
  • 递延所得税资产和负债怎么理解
  • 个人所得税抵扣项目有哪些及金额
  • 非居民纳税人是小规模纳税人
  • 企业需要政府哪方面政策支持
  • 多计提个税怎么办
  • 收入用结转吗
  • 个体工商户可以开建筑劳务发票吗?
  • 企业停产多久算长期停产
  • 员工报销款可以公转私吗
  • 土地递减销售收益怎么算
  • 公允价值确定方法最新
  • 企业国有资产无偿划转办法
  • 查补的税款怎样做账
  • 委托收款税务认可吗
  • 建筑安装专票票样
  • 电梯安装费支付方式
  • 上年计提奖金今年怎么算
  • 退货但发票不冲销
  • 企业纳税总额包含哪些
  • 增值税抵扣凭证包括农产品收购发票
  • 库存商品过期报损
  • 自定义输入是什么
  • 新办企业装修会计分录
  • windows11怎么设置锁屏密码
  • 房地产企业怎么结转成本
  • 展会费用计入什么科目
  • 自适应屏幕宽度
  • 营业利润投资收益是借方还是贷方
  • php生成随机数字
  • 酒店装修费用如何抵扣税
  • vue3+element-plus Dialog对话框的使用 与 setup 写法的使用
  • 关于政府的话
  • 百度地图api的使用
  • 深度学习中的注意力机制模型及代码实现(SE Attention、CBAM Attention)
  • html怎么设置隐藏元素
  • 长期待摊费用的摊销方法
  • go语言入门指南
  • java 桥接模式
  • 小轿车折旧年限
  • 网络销售平台优势和劣势
  • 从财务报表中能看出什么
  • 企业日常费用支出明细表
  • 社保费已扣为什么显示欠缴
  • 电子承兑操作
  • 代扣代缴个人所得税账务处理
  • mongodb数据库操作题
  • 增值税品种
  • 什么时候工程物资什么时候在建工程
  • 验证vip
  • 开收据是财务还是出纳
  • 零申报是怎么回事
  • 委托加工环节应税消费品应纳税额的计算
  • 残保金逾期申报了补报会有罚款和滞纳金吗?
  • 非货币性资产交换换入资产的入账价值
  • 小规模个人所得税税率表2023年
  • 盘亏的固定资产是资产吗
  • 费用报销单和支付证明单的区别
  • 怎么注册电子邮箱号
  • 税款滞纳金征收比率怎么算
  • sqlserver 创建索引与使用
  • 配置结果
  • 如何设置电脑从d盘启动
  • centos删除vg
  • linux添加系统调用的步骤
  • linux系统中文输入法切换不出来
  • dmg是啥文件
  • javascript运用
  • android中数据存储
  • android学习路线
  • shell的使用
  • javascript完整代码
  • python for循环删除元素
  • 浅谈jQuery中ajaxPrefilter的应用
  • android回调函数
  • 如何抵扣
  • 税控盘抄报反写工作难度
  • 山东中信银行电话
  • 重庆税务查询企业信息查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设