Chost 发表于 2021-1-22 00:38

关于php反序列化问题

本帖最后由 Chost 于 2021-1-22 18:37 编辑

有三个文件在同一web目录下访问127.0.0.1/web/admin.php
主文件admin.php
<?php
include 'function.php';

if(!is_string($_COOKIE['username'])){

    SetCookie("username", serialize('man'), time()+3600);
      }
      else{
                echo "hello";
                $str = 'O:4:"test":2:{s:3:"cmd";i:1;s:4:"name";s:4:"daye";}';//此位置可构造反序列化字符串获取function.php文件的$admin
                //echo unserialize($_COOKIE['username']);
                $te = unserialize($str);
                var_dump($te);
      }
?>

function.php文件
<?php
function get($cmd){
      if($cmd===1){
$admin = 'testtttttt';
                echo $admin; //获取
      }
}

function __autoload($classname){
      include $classname.'.php';
      echo 'function';
}
?>

tclass.php文件
<?php
class test{
      public $cmd='ls';
      
      function __destruct() {
                echo 'xxxxxxx';
      system($this->cmd);
   }
}
?>

讨论:要构造怎样的反序列化数据才能获取$admin值呢

Gii 发表于 2021-1-22 09:22

注册了自动加载,反序列化test就直接getshell了呀

Chost 发表于 2021-1-22 10:07

Gii 发表于 2021-1-22 09:22
注册了自动加载,反序列化test就直接getshell了呀

第一个文件的第10行可在这构造反序列过,怎么能调用第二的文件的get方法呢
页: [1]
查看完整版本: 关于php反序列化问题