攻防世界 mfw 解题思路

首先进入题目

攻防世界 mfw 解题思路

点击about

攻防世界 mfw 解题思路

发现一个.git,看看是否存在git源码泄露,我们访问.git文件一下。

攻防世界 mfw 解题思路

发现访问到,那么我们可以用githack把源代码给下到本地来进行代码审计。

攻防世界 mfw 解题思路

攻防世界 mfw 解题思路

发现一个index.php我们点击进入进行代码审计

攻防世界 mfw 解题思路

发现page参数没有任何过滤

assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。 如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。 assertion 是字符串 的优势是当禁用断言时它的开销会更小,并且在断言失败时消息会包含 assertion 表达式。 这意味着如果你传入了 boolean 的条件作为 assertion,这个条件将不会显示为断言函数的 参数;在调用你定义的 assert_options() 处理函数时,条件会转换为字符串,而布尔值 FALSE 会被转换成空字符串。 Strops()函数查找字符串在另一字符串中第一次出现的位置。(ps:strops 大小写敏感,该 函数是二进制安全的·)

所以我们就可以构造payload:'.system("cat ./templates/flag.php").'

攻防世界 mfw 解题思路

然后我们在查看源代码

攻防世界 mfw 解题思路

即可得到flag!