首先进入题目
点击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!