уязвимость несериализации с сериализованным массивом строк? - PullRequest
0 голосов
/ 08 июня 2019

Представьте, что у вас есть структура с заданным (упрощенным) кодом:

$serialized = serialize($_POST);

// ... save $serialized to database

$unserialized = unserialize($serialized);

foreach ($unserialized as $key => $value) {
    echo $key . ': ' . $value . PHP_EOL;
}

Злоумышленник может контролировать одну пару ключ / значение $ _POST, например,

$_POST['exploit'] = "Exploit Value";

Злоумышленникможно только установить значение в строку.Будет ли PHP Object Injection все еще возможен для злоумышленника?Если да, то как?

Я пытался установить значение, подобное этому

$_POST['exploit'] = 'O:17:"foo\data\Example1":1:{s:10:"cache_file";s:4:"test";}';

, но в итоге оно сериализовалось как s:58:"O:17:"foo\data\Example1":1:{s:10:"cache_file";s:4:"test";}", которое нельзя использовать для использования сценария.

...