一步步尝试实现CTF中php反序列化的自动分析
<?php
class leiming {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
if (isset($_GET['data'])) {
highlight_file(__FILE__);
unserialize(base64_decode($_GET['data']));
}
- 先把源码转化为AST存储
- 把 PHP源码以json格式存储 PHPToJson
- 对代码进行分析
方案一:直接用ast中的数据- 方案二:把ast中不需要的数据去掉,只保留类名、方法名、参数名、变量名等
- 获取其中的每一个类 getClass
- 对每一个类进行处理 processClass
- Method处理 handleMethod
- Method中的nodes处理 handleMethodNodes
- 处理方法分开写太乱,等重构到一起写【优先】 allTools