位置: 编程技术 - 正文

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

  • 海关进口啥意思
  • 缴纳代扣个人所得税分录
  • 房地产企业什么时候开具正式发票
  • 主营业务收入为什么记贷方
  • 工厂开不了发票
  • 佣金开什么发票内容
  • 库存现金怎么登记账簿
  • 体检怎么写公司抬头
  • 新会计准则开办费分摊
  • 成品油经销企业开具的成品油电子专用发票
  • 银行现金支票怎么填
  • 事业基金弥补收支差额是什么意思
  • 复利现值系数和普通年金现值系数关系
  • 处置全资子公司税务处理
  • 一次性医保补助多少钱
  • 大米加工厂加工技术培训总结
  • 相关规定个人运输发票税率是多少
  • 工业企业增值税缓交政策
  • 房产税的计税依据包含增值税吗
  • 增值税发票收款人和复核人可以一个人吗
  • 税种认定登记流程
  • 个人住房交易50万元
  • 金融企业三大使命是什么
  • 公益性捐赠公告
  • 什么是要约的撤销
  • 如何安全的处置电子邮件
  • 担保公司的会计分录
  • 显卡的散热
  • phpget方法
  • 筹建期间发生的开办费属于什么费用
  • uniapp+uview
  • ros call
  • 企业销售商品怎么做分录
  • 工业总产值 工业销售产值
  • 购买商品或服务赠品法律地位
  • 旅行社小规模纳税人差额征税
  • php读取xml接口数据
  • 报销差旅费的会计分录为什么是其他应收款
  • php实现分页查询
  • 税务系统申报表
  • 叮咚你有一份好运请查收图片
  • 定额发票新旧版区别
  • 宝塔面板入口
  • 处理二手物品要交增值税吗
  • 为什么要扩展
  • 公司的实收资本是什么意思
  • mysql中desc什么意思
  • 进口货物如何支付外汇
  • 服务费发票的税率
  • 企业法人名下的产业多了是好事吗
  • 汇算清缴期间发放的工资
  • 合并报表存货抵消
  • 预收账款冲销账户怎么做
  • 工程施工的保险费的账务处理
  • 长期待摊费用的最新账务处理
  • 装修费可以一次性入账吗
  • 房地产企业如何结转成本
  • 红字更正法红字冲销法
  • 因产品质量问题造成的损失怎么赔偿
  • 银行涉外收入申报单
  • 股东变更需要哪些资料和手续
  • 晨枫U盘启动工具哪个版本好用
  • win8.1流畅吗
  • SpySub.exe - SpySub是什么进程
  • linux gpfs
  • es6解构函数
  • linux,windows
  • window.navigate 与 window.location.href 的使用区别介绍
  • jquery图片
  • js的异步事件循环机制
  • javascript填表
  • android 控件居中
  • JavaScript 事件绑定及深入
  • 修改jquery版本号不生效
  • Jquery ajax请求导出Excel表格的实现代码
  • 现在开票可以不去税务局吗
  • 购置税发票怎么看自己交了多少税
  • 主管局长和分管局长谈心谈话
  • 淄博市地方税务局
  • 资源税计税价格包括从坑口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设