[BSidesCF 2020]Had a bad day

[BSidesCF 2020]Had a bad day

知识点:

php://filter伪协议读取文件:

php://filter是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()file()file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。

名称 描述
resource=<要过滤的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(`
write=<写链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(`
<;两个链的筛选列表> 任何没有以 read=write= 作前缀 的筛选器列表会视情况应用于读或写链。

官方文档:https://www.php.net/manual/zh/wrappers.php.php

例如最常见的:

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

就是利用这个filter协议读取文件,将index.php通过base64编码后进行输出。这样做就是可以通过编码直接读取文件源码,如果不进行编码,文件包含后就不会有结果。

php代码审计:strpos函数

strpos函数:

<?php
echo strpos("You love php, I love php too!","php");
//返回结果是第一次出现php的位置:9
?>

如果函数前面的字符串里不包含后面的字符串,就不会返回数据

解题过程:

image-20220812144025859

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

直接去读取index.php文件,发现会出现问题

image-20220812144054782

无法打开流,查看别人的wp之后发现,是要把后面的后缀php去掉

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

image-20220812144221013

就会出现base64编码了,之间把页面上的拿去解密会发现是有问题的,要打开F12把base64的编码全部解密

里面会有一段php代码

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

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

strpos函数上面已经说了,会返回第一次出现后面字符串的位置,这里的意思就是要有woofers,meowers,index其中一个字符才会包含这个文件

尝试一下

index.php?category=meowers/../flag

image-20220812144851236

发现页面上并没有flag信息,因为虽然直接包含了flag.php,但是直接包含flag.php并不会读取文件里面的内容

并且源代码里也有这样的提示

image-20220812144955187

所以我们再用那个php://filter协议去进行编码

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

因为要绕过那个if语句,所以中间加了那个index,加的是meowers,woofers也可以

image-20220812145259668

然后中间就会出现base64的编码

解密即可得到flag

image-20220812150121357

flag{ca4ee8f0-6f2b-4c32-a415-48bb80bacbbb}

posted @ 2022-08-12 15:03  Jinx8823  阅读(66)  评论(0编辑  收藏  举报