位置: 编程技术 - 正文

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

  • 商务费用报销一般有哪些流程
  • 固定资产报废清理净损失属于什么费用
  • 公司办理个人所得税退税
  • 报无票收入又开发票了怎么办?
  • 核定征收是每个月都要交税吗
  • 行政单位财务长期挂账处理办法
  • 企业销售矿产是否需要缴纳资源税呢?
  • 业务宣传及广告费超比例
  • 所得税清算时坏账怎么算
  • 2018年生育保险报销
  • 预交增值税扣税绑不了三方
  • 电商企业如何确定产品结构
  • 建筑业月末账务处理
  • 代扣代缴增值税附加税减免政策
  • com2us密码找回
  • win10平板模式不好用
  • cpu资源占用高怎么办
  • php脚本主要用于的三个领域
  • 苹果手机微信怎么迁移聊天记录到新手机
  • 螃蟹不能和什么食物一起
  • win10怎么找应用程序
  • php bcsub
  • PHP:oci_field_type()的用法_Oracle函数
  • 购买股票的会计分录
  • 三元运算符判断闰年php
  • 收款凭证和付款凭证区别
  • less预处理器详解
  • 梅尔加足球俱乐部
  • 基于javaweb是什么意思
  • verilog hdl中任务可以调用
  • 销售精装修房如何做账
  • 公司银行账号注销需要什么资料
  • 接手前往年的银行余额不平怎么办?
  • js方案
  • 开票是否享受优惠
  • 公司购买食品如何入账科目
  • 国外货物进入保税仓需要办理什么
  • 百旺金赋怎么开红字发票
  • 有关预收款的说法
  • 长期借款转其他应付款
  • 长期股权投资稀释股权
  • 业务招待费占管理费用的多少算合适
  • 本年利润的会计分录
  • 代理记账服务业务内容
  • 股权激励费用摊销意思是
  • 住宿发票没有写天数
  • 企业购置软件的会计处理
  • 支付维修基金放什么科目
  • 折现率的选择主要是根据什么来判断
  • 新成立企业建账流程
  • 建账及账务处理步骤
  • 预提业务
  • 商业企业批发商是什么
  • sql多行合并成一行 oracle
  • 去大城市发展成功的例子
  • win2008下的HPC群集是什么有什么作用
  • fedora系统
  • vc6_cn_full.exe
  • win7如何彻底关闭135端口 dcom
  • windowsxp怎么装windows7
  • linux 判断语句
  • linux tee命令详解
  • win10系统的pin码
  • win10怎么快一点
  • dos批处理实例
  • cocos2dx 教程
  • nodejs安装express-g报错
  • UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
  • android的ui组件有哪些
  • 为了防止编码过程的过载现象出现
  • 使用jquery实现的项目
  • ssh -keygen
  • 简单介绍一下自己
  • 安卓新安装包
  • android实现多线程的方法
  • 12123罚款滞纳金不能交嘛
  • 破产重整资产的税务优惠
  • 施工企业建筑机械管理机构主要职责是负责建筑机械的
  • 深圳税务局官方客服电话
  • 怎么删除天眼查的犯罪记录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设