位置: 编程技术 - 正文

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

  • 收到退回的以前年度租金怎么处理
  • 城市维护建设税优惠政策
  • 增值税是价内税,消费者是税款的最终负担者( ) A对 B错
  • 企业持股分红
  • 工程施工企业收入确认成本结转案例
  • 车辆保险费印花税目
  • 印花税可以申报以前年度吗
  • 其他应收款报表数据怎么取
  • 货物无偿赠送分录
  • 一次性筷子的消费税
  • 承租人与出租人签订了一份租赁合同,该设备
  • 房贷怎么申报抵押贷款
  • 期末存货跌价准备金额的确定
  • 公司代收生育津贴怎么做账
  • 如何理解出口退税政策
  • 企业所得税税前扣除异常
  • 发票进项和销项对不上后果
  • 增值税税负最终由谁承担
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 债权投资属于其他非流动金融资产嘛
  • 企业不征税收入用于支出所形成的固定资产
  • 外包劳务费用如何计算
  • 企业所得税免税政策
  • 财务人员工资计入管理费用还是财务费用
  • 包装物计价
  • 一般纳税人销售二手车增值税税率
  • windows11怎么设置默认应用
  • 发票怎么保管不会坏
  • 行政事业单位资产负债表
  • 小规模城建税减半征收2021新政策
  • 汇算清缴补充公告
  • Ubuntu18.04配置允许远程访问
  • pytorch自定义网络层
  • grpc 调试工具
  • 收到专票怎么入账
  • 年底本年利润需要结转吗
  • 电子承兑汇票到期怎么收款
  • 土地出让金抵减增值税账务处理
  • centos下编写贪吃蛇吗
  • 以摊余成本计量的债权投资与以公允价值计量且其变动
  • 冲减去年管理费怎么做分录
  • 待报解预算收入什么意思
  • 营业外收入可以冲减管理费用吗
  • 确认收入未开发票
  • 企业未开票收入怎么入账
  • 机械租赁公司需要什么证件
  • 无形资产当年提摊销嘛
  • 企业计提什么意思
  • 自营工程领用自产产品的处理
  • 建账要求
  • 暂估入库产品销售结转成本
  • 服装、眼镜、鞋、西药的发票如何做账较好?
  • 本月的费用
  • 长期待摊费用怎么记账
  • mysql中的存储过程
  • windows2008 iis7如何取消目录执行权限的详细图文介绍
  • mscorsvw.exe是什么
  • win10预览设置
  • win7系统笔记本怎么连接wifi
  • win7怎样添加开机启动项
  • mac系统怎么创建用户
  • win10关机快捷键
  • Linux Mount NTFS分区造成的权限问题如何解决?
  • linux查看磁盘io负载
  • linux中病毒了怎么处理
  • nodejs爬取数据
  • linux shell语句
  • 批处理 >nul
  • css网站布局实录 pdf
  • 用球体模拟天空的游戏
  • [置顶] 启动unity3d 提示“unity3d EditorWindow could not be loaded because the script is not found in the projec”
  • python用装饰器自动注册Tornado路由详解
  • 开票怎么查发票总额
  • 银行端查询缴税凭证怎么打印
  • 金融商品转让都包括什么
  • 国税补录信息怎么查询
  • 国税地税征管体制改革方案
  • 家庭农场有什么用途
  • 新加坡国税局的电话号码
  • 李民基
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设