本文为记录个人信安小白的刷题路程,大佬勿喷,也同时希望文章能对您有所帮助

打开靶机,F12查看源码,发现./time.php?source,访问试试,

发现源码,

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
<?php
#error_reporting(0);
class HelloPhp
{
public $a;
public $b;
public function __construct(){
$this->a = "Y-m-d h:i:s";
$this->b = "date";
}
public function __destruct(){
$a = $this->a;
$b = $this->b;
echo $b($a);//动态调用函数
}
}
$c = new HelloPhp;

if(isset($_GET['source']))
{
highlight_file(__FILE__);
die(0);
}

@$ppp = unserialize($_GET["data"]);

反序列化漏洞,构造phpinfo("5")查看php配置信息和模块信息,



可以看到system等函数被过滤,但是assert函数没有被过滤,
assert()函数:将字符串作为PHP代码执行。
构造payload查看完整php信息(flag可能藏在里面),

全局搜索flag

获得flag