

这上面显示说,flag在这个/var/www/html/flag.php文件中。由此可知,这道题是文件包含题。
明确了目标,咱们在场景那个页面按下F12来看下源代码。

在做题之前咱们先了解了解COOKIE,可以把COOKIE理解为我们打开一个网站,我们属于客户端,打开一个网站就相当于我们给网站服务器发送了一个请求,然后服务器记录用户状态,颁发了一个COOKIE,然后我们更改这个COOKIE的值,再次请求。
下面直接看源代码中最重要的部分。
$lan = $_COOKIE['language'];这行代码说明COOKIE是可控的,lan 由COOKIE传入;language后面的值才是COOKIE值,是我们要传入lan 里面的内容;所以说我们把这个值给language才可以发送请求。
if(!$lan)
{
@setcookie("language","english");
@include("english.php");
}!是反之的意思可以理解为不的意思,如果说咱们上传的COOKIE 不存在lan,则这就说明我们的lan包含在english.php文件中。
else
{
@include($lan.".php");
}else反之如果说我们上传的COOKIE存在lan,则lan会自动拼接.php,并进行包含。
分析到这里就可以了。
用到的有Kali,burpsuite,火狐浏览器。





接下来我们该构造 payload数据包了,在构造之前我们先了解了解php filter伪协议的规则,后面会用到。
php://filter/过滤器|过滤器/resource=待过滤的数据流知道了规则后, 那我们就来构造payload数据包:
php://filter/convert.base64-encode/resource=/var/www/html/flagread读取,convert转换,base64,encode编码,
resource=flag转换到flag中,就是说把flag.php文件转换为base64编码格式。
/var/www/html/flag意思是flag.php文件在var文件夹里面的www文件夹里面的html文件夹里面,可以看这篇博客最上面的第一张图片。
因为$lan会自动拼接.php,并进行包含,所以我们不需要加.php后缀。



