位置: 编程技术 - 正文

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

  • 可以抵扣进项税额的增值税普通发票
  • 企业所得税如何合理避税?
  • 税务登记管理办法2023
  • 金蝶软件中怎么增加固定资产
  • etc发票可以抵扣进项税吗
  • 累计赡养老人专项扣除6000
  • 调整汇算清缴利息怎么算
  • 进口贴息对企业的好处
  • 不动产进项税额抵扣最新通知2023
  • 企业所得税必须要季度缴纳吗
  • 免税企业取得增值税专用发票怎么处理
  • 外籍人员个人所得税政策
  • 增值税税控系统专用设备
  • 记帐凭证怎么制作的
  • 库存虚增怎么调账
  • 收到员工补缴的公积金怎么入账
  • 历年亏损企业开什么发票
  • 普通发票也属于增值税发票吗
  • 如何更改中英文切换
  • 什么是租赁公司的主营业务
  • 固定资产可以一次性抵扣进项税吗
  • 收到服务费发票可以计入什么科目
  • php几天可以速成
  • 二次规划是什么意思
  • session.php
  • php xml转数组
  • 简单实现php留言功能
  • /t python
  • nvme安装win10教程
  • 无法将node项识别为
  • open api平台
  • php类的特性实例是什么
  • 销售原材料怎么入账
  • 纳税申报和账务不一致
  • 年末本年利润怎么结转
  • 增值税收范围
  • 老板出差餐费费用怎么处理
  • 企业转让股权如何缴纳企业所得税
  • 销售部门发生的商品维修费
  • 发票商品分类
  • 海关报关单位注销操作规程
  • 专项应付款转资本公积需要缴纳所得税
  • 公司网站设计怎么做
  • 二手车需要交什么
  • 退付现金什么意思
  • 企业会计准则下职工薪酬核算的困难与对策研究
  • 内账中已交的增值税在哪
  • 网吧的收入怎么做账
  • 跨月销项负数发票分录
  • 税负率偏低
  • 农产品收购单怎么做会计分录
  • 连锁店会计处理流程
  • 飞机票退票费报销凭证图片
  • 买车保险返现是什么意思
  • 企业可以不交残保金吗
  • 解除职工劳动关系补偿
  • 会计审计属于什么类别
  • 出纳账户怎么设置
  • freebsd ifconfig
  • vrvrf.exe是什么进程
  • ubuntu系统怎么进入命令行
  • debian openssh
  • winole.exe - winole是什么进程
  • win10预览版好吗
  • xp系统1
  • hp是什么软件缩写
  • 在linux中使用v2ray
  • win10预览版和正式版区别
  • jquery移动端ui
  • 批处理注册reg文件
  • mod兼容性
  • 表单元素的属性
  • jquery选择器的优势有哪些
  • 查找第一个字符
  • Python搭建HTTP服务器和FTP服务器
  • 设计一个投票程序
  • 稽查局和税务局哪个好发展
  • 山东税务是干什么的
  • 免征船舶吨税的范围
  • 出口退税申报已通过,又被删除,报关单号能用吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设