打开环境,浏览一下所有的页面,在About中看到了一些提示
用到了Git和PHP,那这道题思路肯定就是git泄露和php代码审计了。
利用Githacker拿到源码
看到了flag.php,cat查看无果,有人说是需要浏览器渲染才可以……
接着看代码 ==> index.php
关键部分如上(第10行是我后续自己写的,原题没有),page传参, 然后拼接处一个完整的路径。目的是访问templates文件夹里的flag.php。
下面用到了一个assert函数,是php断言函数,这个与eval()有着某些关系,都是可以执行命令的。assert函数会判断传入的参数结果为false时采取措施,如果参数是字符串时,会被当做php代码来执行,所以通过这个函数可以执行一些命令。
这里可以先闭合strops的括号,再拼接system,然后注释掉后面的代码。
').system('ls templates');//
查看网页源码可以看到有回显
payload:?page=').system("cat templates/flag.php");//
拿到flag
总结
Git泄露拿到源码
PHP代码assert函数命令执行