PCTF2016 Web300神盾局的秘密(反序列化漏洞)

Author Avatar
kabeor 3月 11, 2018

PCTF2016 Web300神盾局的秘密(反序列化漏洞)

打开之后是这样的
mark

查看网页源代码,只有一行
mark

很明显这是base64加密,于是解密看一下
mark
于是看出访问格式为

showimg.php?img=文件名的base64

得到格式之后,先看showimg.php,base64加密访问
mark
mark
可以看出,这里过滤掉了一些特殊字符以及pctf字符串。

我们再来看看index.php,把它base64加密
mark

然后访问,查看源代码
mark
我们看到

require_once('shield.php');

require_once语句在脚本执行期间包含并运行指定文件。

于是我们需要访问shield.php,再次base64加密访问
mark
mark

这里提示我们flag就在pctf.php里,但是showimg.php中过滤了pctf,那么我们又注意到index.php中最后
$x=unserialize($g)
也就是反序列化字符串,所以我们可以自己将pctf.php序列化然后传入

构造类似shield.php中的类如下

<?php

class Shield {
public $file;
function __construct($filename = '') {
$this -> file = $filename;
}
}

$x = new Shield();
$x -> file = 'pctf.php';
echo serialize($a);

运行
mark
将得到结果传入
即访问的是

index.php?class=序列化字符串

mark

得到flag

完结

From https://kabeor.github.io/PCTF2016 Web300神盾局的秘密(反序列化漏洞)//) bye

This blog is under a CC BY-NC-SA 4.0 Unported License
本文链接:https://kabeor.github.io/PCTF2016 Web300神盾局的秘密(反序列化漏洞)/