位置: 编程技术 - 正文

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

  • 进项税额转出会影响利润吗
  • 成本计算账户期末一般有余额吗
  • 银行日记账期初余额写在什么科目
  • 小规模免税的税额怎么处理
  • 预存1000送100促销活动方案
  • 公司报销费用发票怎么开
  • 会计核算的具体流程
  • 合伙企业个人所得税怎么申报
  • 共同控制合营企业的合营者
  • 房地产税和物业税
  • 外购的半成品属于原材料吗
  • 出口发票金额和备注了差了1分钱
  • 如果增值税发票丢了好的怎么办有谁交罚熬一
  • 转让财产需要缴税吗
  • 建筑企业升资质主管单位
  • 电子发票开错怎么办
  • 各省市地税发票怎么开
  • 减免附加税还要计提吗
  • 印花税计入股票成本吗
  • 购买国债兑现时要交税吗
  • 销售不动产增值税税率变化
  • 企业股权平价转让涉及哪些税费
  • 公司转账给法人最多可以转多少
  • OS X Yosemite系统下载失败怎么办?OS X 10.10下载错误解决方法
  • 以前年度的账错了怎么办
  • 物业公司营业成本包括哪些
  • 苹果mac怎么删除照片
  • kb4499164安装失败怎么办
  • 增值税一般纳税人资格登记表
  • DxDebugService.exe是什么进程 DxDebugService进程安全吗
  • 一次摊销法优缺点
  • 预算周转金会计怎么做账
  • 增值税专用发票查询系统官方网站
  • 化妆品与药品
  • 解决烧心最快方法
  • 社保调整基数后 两个月没变化
  • 建账初期的库存商品录入
  • win10下 yolov8 tensorrt模型加速部署【实战】
  • 应收账款贷款怎么做
  • 航天金税盘维护费什么时候交
  • 租入固定资产改良
  • 生产企业出口货物必须以什么为计税依据计算免抵退税额
  • 暂估收入时会有哪些凭证
  • 在途资金属于什么科目
  • 筹建期间的费用计入什么费用
  • sql server2005使用方法
  • 员工工资能抵税吗
  • 存货报废进项税额需要转出吗
  • 新股东入股的账务处理
  • 开发票的销售收入正规的做账如何做?
  • 只知道主营业务怎么办
  • 销售折扣销售方会计处理
  • 工程预付款发票开什么明细项目
  • 如果没有抵扣要交多少税
  • 消费税出口退税吗
  • 员工的报销
  • 锅炉设备销售
  • 处置固定资产损失的账务处理
  • mysqlsum查询慢
  • 通过T-SQL语句实现数据库备份与还原的代码
  • thinkpad e431 bios怎么进入
  • 怎么从win8装回win7
  • mac怎么共享网络给iphone
  • win10周年版
  • unsupportedclassversion
  • Expand、Fasthelp、Fc命令的用法
  • js实现新浪博客推送
  • html加载条代码
  • unity at
  • 重写runnable
  • python 字符串
  • python写一个复制文件的程序
  • androidsdk的计算机
  • 哪个机场离东莞樟木头最近
  • 地税局属于哪个部门管
  • 淄博市地税局局长
  • 山东省水资源税征收标准
  • 家政公司的清洁工具
  • 房屋租赁税率是6还是9
  • 重庆地税局官网公众号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设