欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

unserialize反序列化

程序员文章站 2022-03-09 14:25:49
...

unserialize反序列化
unserialize反序列化

简单来说序列化就是存档,反序列化就是读档

unserialize反序列化

unserialize反序列化

通过serialize函数来将对象、类等序列化

unserialize反序列化

反序列化,将字符串重新解析成对象。

unserialize反序列化
unserialize反序列化

将数组进行序列化

unserialize反序列化

unserialize反序列化

魔术方法就是一个小机关,当满足条件就自动触发。

unserialize反序列化

对象触发和对象触发完,自动销毁。

所以只有_construct 和_destruct显示
unserialize反序列化
unserialize反序列化

现在使用反序列化,就显示了_wakeup和_destruct

unserialize反序列化
unserialize反序列化

变量un去调用类里面的zkaq这个方法,最后执行这个zkaq这个方法。

unserialize反序列化

destruct在最后

unserialize反序列化

反序列化的核心就是你要处理的数据,放入反序列化函数,去执行

反序列化一定需要白盒审计。
unserialize反序列化
unserialize反序列化

进入靶场,让我们先看下源码

http://59.63.200.79:8010/uns/index.php?source

flag in ./flag.php <?php
Class readme{
    public function __toString()
    {
        return highlight_file('Readme.txt', true).highlight_file($this->source, true);
    }
}
if(isset($_GET['source'])){
    $s = new readme();
    $s->source = __FILE__;
    echo $s;
    exit;
}
//$todos = [];
if(isset($_COOKIE['todos'])){
    $c = $_COOKIE['todos'];
    $h = substr($c, 0, 32);
    $m = substr($c, 32);
    if(md5($m) === $h){
        $todos = unserialize($m);
    }
}
if(isset($_POST['text'])){
    $todo = $_POST['text'];
    $todos[] = $todo;
    $m = serialize($todos);
    $h = md5($m);
    setcookie('todos', $h.$m);
    header('Location: '.$_SERVER['REQUEST_URI']);
    exit;
}
?>
<html>
<head>
</head>

<h1>Readme</h1>
<a href="?source"><h2>Check Code</h2></a>
<ul>
<?php foreach($todos as $todo):?>
    <li><?=$todo?></li>
<?php endforeach;?>
</ul>

<form method="post" href=".">
    <textarea name="text"></textarea>
    <input type="submit" value="store">
</form>

__FILE__:显示当前文件的绝对路径。

unserialize反序列化
unserialize反序列化

前面都没怎么仔细说明,这里就详细说明一下吧

创建了一个类(相当于创建了一个函数),
然后当source接收到传参值,且不为空,
new一个类
把phpinfo赋值给source,之前那个新new的类里面的变量this去调用source,返回1为真,触发
最后这个新new的类输出phpinfo
unserialize反序列化
unserialize反序列化

反序列化,把序列化解析出来。

在一个类里面,如果一个传参满足了魔术方法,就会自动触发,
unserialize反序列化

unserialize反序列化

2行代码相等

unserialize反序列化

相关标签: 笔记 反序列化