php - 是否可以通过仅使用内置类来利用 PHP 的反序列化?
问题描述
我正在使用 PHP 7.3。是否可以仅使用PHP 内置类来利用 PHP 反序列化?
似乎内置类本身已经magic functions
实现了一些(很可能用于序列化/反序列化)。可以使用以下代码进行验证:
<?php
$classes = get_declared_classes();
sort($classes);
// __autoload is deprecated
$magic_methods = ["__construct", "__destruct", "__call",
"__callStatic", "__get", "__set", "__isset", "__unset",
"__sleep", "__wakeup", "__toString", "__invoke",
"__set_state", "__clone", "__debugInfo"
];
$classes_test_magic = [];
$classes_test_magic["className"] = $magic_methods;
foreach ($classes as $className) {
foreach ($magic_methods as $magicMethod) {
if (method_exists($className, $magicMethod)) {
$classes_test_magic[$className][] = 1;
} else {
$classes_test_magic[$className][] = 0;
}
}
}
header("Content-Type: text/csv");
header("Content-Disposition: attachment;filename=builtinClassesMagicMethods.csv");
$fp = fopen("php://output", "w");
foreach ($classes_test_magic as $className => $methodsStatus) {
fputcsv($fp, array_merge([$className], $methodsStatus));
}
fclose($fp);
解决方案
推荐阅读
- python - gatk VariantRecalibrator 上的 Snakemake
- java - 在java中的方法中返回不同的数据类型
- c++ - 如何将字节从 std::ostream 流式传输到 std::vector
? - php - Laravel 集合变换/映射方法不一致的行为
- react-native - 如何修复键盘以隐藏 React Native 中的输入字段
- excel - 如何在一个单元格中使用触发词有条件地格式化一系列单元格?
- visual-studio-code - vscode 不断生成覆盖目录
- python - 如何在从烧瓶到客户端的请求中发送多个命令?
- sql - BigQuery 查询事件表
- unity3d - 我在 Unity 中导入 Oculus 集成有什么问题吗?