位置: 编程技术 - 正文

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

  • 小规模开票超过五百万元,会自动升为一般纳税人吗
  • 差额税征收标准
  • 不开票收入要交所得税吗
  • 核定征收需要什么条件
  • 公司团建取得的进项发票可以抵扣增值税吗
  • 其他应收款账龄怎么算
  • 支付土地使用权的会计处理
  • 应付账款保理是什么意思
  • 电子承兑过期后怎么兑现处理合适呢?
  • 之前付过款回来收到发票应该怎么做凭证
  • 高管怎么样
  • 增值税专用发票验证真伪
  • 无偿赠送不得抵扣吗?
  • 契税如果没有按时交会怎么办
  • 地方教育附加怎么算的?
  • 工会经费的银行怎么入账
  • 当月扣缴社保需要申报吗
  • 剑灵配置要求2020官方
  • 删除桌面上的图标用什么键
  • win7右键设置方法
  • php中class用法
  • 在win7系统中怎样卸载win10?
  • windows7便签删除了怎么恢复
  • 广告公司的设计师多少钱一月
  • php反射使用场景
  • 报销办公用品会计分录计入其他应付还是其他应收
  • 建筑工程开税票比例占到合同金额的多少
  • framework core
  • vue3使用教程
  • php array_walk_recursive 使用自定的函数处理数组中的每一个元素
  • thinkphp模型作用
  • 代发工资一般收多少服务费
  • 待核销基建支出与待摊投资的区别
  • 残疾人就业保障金怎么申报
  • 分配现金股利的分录
  • 分公司财务核算独立不独立
  • 一般纳税人上月有普通发票收入没入账可以次月加上吗
  • 增值税发票超过一年未抵扣
  • sqlserver修改值
  • 个人重组债务怎么交税
  • 网上申请发票要钱吗
  • 普票加专票超过45万怎么交税
  • mysql文件更改存放路径
  • 专利财政补贴
  • 付款后没有发票怎么办
  • 销项负数发票给对方哪一联
  • 红字更正法红字冲销法
  • 金税盘技术维护费
  • 物业公司收的水费怎么做账
  • 公司向法人借款需要交税吗
  • 三证合一是哪三证
  • 企业建账的法律规定
  • mysqldump -w
  • xp系统卡到开机画面
  • centos清理磁盘空间
  • ubuntu的sudo
  • vmware15.5安装mac
  • dpd参数
  • win10系统代理在哪
  • wow血条插件
  • rotation 与vector3乘积关系
  • js操作list
  • nodejs爬取数据
  • Javascript 事件冒泡机制详细介绍
  • jquery源码分析
  • jquery form serialize
  • asp.net 4.8
  • JavaScript+html5 canvas实现图片破碎重组动画特效
  • jquery使用jsonp
  • python语言文件
  • JavaScript入门教程
  • 关于草丛:单局游戏内
  • javascript图片切换代码
  • jq easyui
  • javascript要学哪些
  • jquery fullpage
  • 完税证明可以自己在官网打印吗
  • 无锡国税局电话咨询热线
  • 福斯特会计软件下载
  • 同比减少怎么计算出来
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设