【青少年CTF S1·2026 公益赛】CallBack

张开发
2026/4/13 23:49:11 15 分钟阅读

分享文章

【青少年CTF S1·2026 公益赛】CallBack
?php function executeCallback($callback) { $someArray [0, 1, 2, 3]; return array_map($callback, $someArray); } if (isset($_GET[callback])) { $evilCallback $_GET[callback]; $newArray executeCallback($evilCallback); } ?什么是回调函数回调函数就是函数被当作参数传递给另一个函数并在合适的实践被“调用”PHP中4种常见的回调函数写法1、普通回调函数字符串传递函数名function sayHi($name) { echo Hi, $name; } // 调用直接传函数名字符串 call_user_func(sayHi, Tom);2、匿名函数回调最常用不同提取定义函数直接写在参数里面$numbers [1,2,3]; $newArr array_map(function($n) { return $n 1; }, $numbers);3、类方法回调class Test { public static function hello() { echo Hello; } } // 静态方法回调 call_user_func([Test, hello]);4、对象方法回调class Test { public function hi() { echo Hi; } } $obj new Test(); call_user_func([$obj, hi]);题目用 array_map($callback, [0,1,2,3])这意味着用户传入的函数会被执行但参数被强制固定为数字 0-3。当我们传递system()的时候PHP会执行system(0)、system(1)、system(2)、system(3)因此不能传递system()函数这题直接使用phpinfophpinfo可以接收整数参数http://challenge.qsnctf.com:55842/?callbackphpinfo直接在配置信息中找到flagqsnctf{c893c0079b974676b4dbffad9c43b7d8}

更多文章