首先打开题目进入环境,在此之前题目没有太多提示
我们可以看这个页面知道flag在flag.php这个文件中,而且还有文件路径为/var/www/html/index.php
接着我们可以尝试注入index.php和flag.php,但是页面都没有出现实质有用的新信息,所以我们ctrl+U查看网页代码
变量$lan 用 $_COOKIE传参,所以我们要改cookie的值
第19行 @include("english.php")可以看出此处存在文件包含。include函数用php://filter伪协议来绕过
php://filter
伪协议可以用于如下函数:
include()
file()
file_get_contents()
readfile()
file_put_contents()
可以用于读取、写入文件等函数
php://filter伪协议
的一般使用方法为:
php://filter/过滤器|过滤器/resource=要过滤的数据流
接着我们构造playload:
Cookie: language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag
接着我们用bp抓包
因为变量是用cookie传参的,所以我们构造的playload是关于cookie的,在bp里面将cookie更改为我们构造的,最后就会得到
红线圈出来的就是flag的base64编码值,所以我们要将红线圈出来的值进行base64解码就会得到flag=cyberpeace{21c79bfefa60040f9ce23cde176becbd}