位置: 编程技术 - 正文

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

  • 外出办事车费计入什么科目
  • 装修款需要开发票吗
  • 无形资产登记什么明细账
  • 小规模没有成本票怎么做账
  • 社保基数在哪里调整
  • 税控盘280抵扣报税填在
  • 小规模纳税人专票税率是多少
  • 印花税是不是必须要交
  • 固定资产停止使用转入更新改造的会计处理
  • 评估所得征税方法是一种控制纳税人逃税和避税的措施
  • 投资者撤回投资额300000
  • 某企业2016年年末经营资产总额为4000万元
  • 一次性发放几个月的工资怎么申报
  • 小微企业可以抵税吗
  • 收购药材再销售可以免税
  • 收到加盟费尾款怎么做分录?
  • 法人实名认证后没有绑定企业怎么办
  • 如何生成公司开票信息二维码
  • 1697509557
  • windows11结束任务快捷键
  • 主板类型大全
  • switpa.exe - switpa是什么进程
  • win11版本22000.194
  • windows server 2003 r2 序列号
  • 苹果11怎么充不上电了
  • 消防工程改造需要什么资质
  • phpstorm如何运行
  • pow是什么意思中文翻译
  • 手机电脑排行
  • 工程审计的目的包括哪些
  • uniapp监听网络状态
  • 发财树怎么养护与浇水
  • php自定义表单
  • php十进制转二进制算法
  • 支付境外培训费代扣啥税
  • 增值税已认证抵扣
  • 增值税税收滞纳金哪里缴纳
  • 个税申报系统操作指南
  • 公司注销实收资本退回需要交税吗
  • 物流公司修理班的管理有那些书
  • 上个月开的发票这个月作废怎么做帐
  • 建设项目财务费用包括
  • centos乱码,怎么修改成英文
  • mac安装brew
  • 其他资本公积可以冲减吗
  • 如何查询金税盘发票金额及开票数量
  • 蔬菜开票税率是多少
  • 月未转出未交增值税
  • 刚开的小公司怎么报税
  • 固定资产到期出售 合同
  • 递延资产放在资产负债表哪里
  • 折扣如何做账
  • 人力成本费用率和人工成本利润率
  • 单据 凭证
  • 公司注销留抵税额怎么做进项转出
  • 商品进销差价的作用
  • mysql 5.7.11 winx64安装配置教程
  • safari macos
  • explore.exe进程的作用
  • centos清理缓存
  • 红石2代
  • diskmakerx制作u盘需要多久
  • win8.1操作界面
  • win10打不开应用市场
  • win10系统附件在哪里
  • 基于jquery的框架有哪些
  • jQuery+PHP+MySQL二级联动下拉菜单实例讲解
  • node.js权限管理
  • zabbix添加客户端
  • 使用vue-cli快速搭建vue项目
  • 详谈左晖
  • python3.9多线程
  • javascript 进阶篇1 正则表达式,cookie管理,userData
  • jquery操作checkbox火狐下第二次无法勾选的解决方法
  • python极简讲义pdf
  • javascript程序设计教程
  • jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
  • 四川国税发票查询验证
  • 个体工商户个人所得税
  • 水资源税征收标准2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设