ctfshow 遍地飘零

<?php
include "flag.php";
highlight_file(__FILE__);

$zeros="000000000000000000000000000000";

foreach($_GET as $key => $value){
    $$key=$$value;
}

if ($flag=="000000000000000000000000000000"){
    echo "好多零";
}else{
    echo "没有零,仔细看看输入有什么问题吧";
    var_dump($_GET);
}

这道题真的很巧妙("哭~")

涉及到变量覆盖和变量名和赋值$

首先foreach($_GET as $key => $value)是把GET请求收到的所有参数赋给$key然后把其值赋给$value

构造思路如下:

使得$key=_GET;$value=flag;那么$$key=$_GET;$$value=$flag;
因此我们将$flag的值成功赋值给$_GET;
成功在最后执行var_dump($_GET)打印出$flag的值

payload如下

?_GET=flag
posted @ 2024-11-13 00:51  C1ves  阅读(39)  评论(0)    收藏  举报