题目提示我们flag在flag.php中,还提示了index.php的相对路径
源代码最后是echo $x,$x是index.php,所以这里就有一个目标,要么让index.php包含flag.php,
要么直接输出flag.php
然后从上往下看,如果配置文件里显示错误是关闭的,那么就让他开启,
显示所有错误
cookie中语言被赋值给lan变量,
如果lan变量没有值,那么设置cookie为英语,包含english.php(这个无所谓,因为我们肯定会给cookie赋值的)
否则就做php拼接
也就是说lan的值来自cookie,因为lan最开始肯定是没有值的,必须经过cookie赋值才行
可以发现,要完成我们的目标,我们必须从cookie入手
按F12,发现本来是没有cookie的,所以就打算用burp抓包来赋予cookie
因为我们没有办法对于index.php干什么事情,所以最后echo $x,我们之前想的这种方式输出flag.php的想法就破产了,
那么现在整理一下思路,
1.lan的值来自cookie
2.lan存在文件包含漏洞,
3.flag路径已知
4.flag.php是纯文件,我们要自己读出来
综上,考虑到用php://filter/read=convert.base64-encode/resource,来自行读出,
为什么用这个伪协议,我的上一篇文章有讲,这里就不过多阐述了(不水字数了)
Cookie: language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag
base64解码
得出flag