[BJDCTF2020]Mark loves cat 1

1.发现

1.1使用dirsearch扫一下,发现存在.git泄露。

 

 1.2使用Git Hack扒下flag.php,index.php,开始审计代码。

#flag.php将内容赋值给flag。

<?php
include 'flag.php';    #包含flag.php文件
 
$yds = "dog";
$is = "cat";
$handsome = 'yds';       #定义三个变量    
 
foreach($_POST as $x => $y){     
    $$x = $y;
}
foreach($_GET as $x => $y){
    $$x = $$y;
}
foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){
        exit($handsome);
    }
}
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($yds);
}
if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){
    exit($is);
}
echo "the flag is: ".$flag;

2.步骤

2.1阅读源代码,发现有变量覆盖,写出payload,得到flag。

?yds=flag
post: $flag=flag

 

 3.借鉴

[BJDCTF2020]Mark loves cat - GTX690M - 博客园 (cnblogs.com)

https://www.zhihu.com/question/21083498

4.知识点

.git泄露

变量覆盖漏洞

 

posted @ 2021-11-03 09:14  WeQi_Blog  阅读(110)  评论(0)    收藏  举报