变量覆盖漏洞
打开页面,然后用dirsearch扫描。发现.git文件泄露
flag.php
1 | <?php |
index.php
1 | <?php |
exit()
1 | exit()函数会输出一条信息后退出 |
我们可以利用这个exit()函数来对调用flag.php文件里的file_get_contents(‘/flag’),读出flag出来
因此我们看
1 | foreach($_GET as $x=>$y){ |
中的$$x和$$y,我们可以看到有变量覆盖漏洞,因此我们get提交
1 | ?yds=flag |
让$x=yds,$y=flag,所以
1 | ”$$x==$$y“相当于”$yds=$flag“ |
所以我们要办法利用exit($yds),因此我们要通过
1 | if(!isset($_GET['flag']) && !isset($_POST['flag'])) |
这一个条件,所以我们要让$_GET[‘flag’]和$_POST[‘flag’]不存在,所以之前构造的
1 | ?yds=flag |
便符合条件
而如果想利用exit($is)的话,我们可以利用
1 | foreach($_GET as $x => $y){ |
构造get提交
1 | ?is=flag |
便会构成
1 | ”$$x=$$y“相当于”$is=$flag“ |
然后我们经过以下条件
1 | if(!isset($_GET['flag']) && !isset($_POST['flag'])) |
所以get要提交的参数flag或post要提交参数flag,所以可以构造paload
1 | ?is=flag&flag=flag |