攻防世界 mfw 解题思路
首先进入题目
点击about
发现一个.git,看看是否存在git源码泄露,我们访问.git文件一下。
发现访问到,那么我们可以用githack把源代码给下到本地来进行代码审计。
发现一个index.php我们点击进入进行代码审计
发现page参数没有任何过滤
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。 如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。 assertion 是字符串 的优势是当禁用断言时它的开销会更小,并且在断言失败时消息会包含 assertion 表达式。 这意味着如果你传入了 boolean 的条件作为 assertion,这个条件将不会显示为断言函数的 参数;在调用你定义的 assert_options() 处理函数时,条件会转换为字符串,而布尔值 FALSE 会被转换成空字符串。 Strops()函数查找字符串在另一字符串中第一次出现的位置。(ps:strops 大小写敏感,该 函数是二进制安全的·)
所以我们就可以构造payload:'.system("cat ./templates/flag.php").'
然后我们在查看源代码
即可得到flag!