ctfshow 遍地飄零

c1432發表於2024-11-13
<?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

相關文章