稍微记录下吧,题目不难,主要是php了解的还是太少
题目知识点:.git泄露,php代码审计,可变变量
首先题目给了一个写的很好看的前端,拉到最底下看到一个dog
一开始也没啥思路,后来扫了下发现有.git源码泄露,主要代码如下
1 |
|
来稍微讲讲这段代码吧,自己php也懂得不多,也是一步步调试才看懂的(我太菜了.jpg)
首先是foreach这个函数,这里拿get这段来将吧,post这题其实用不到
1 | foreach($_GET as $x => $y){ |
当这里输入 xxx/?yds=flag
后,括号中的$x为yds,$y为flag;然后里面的$$x表示$yds,$$y表示$flag,这个时候就把flag的值赋给了yds
这就是所谓的可变变量,就是把一个变量的值变为另一个变量的名字
这题只要输入这个就出结果了,因为下面的三个exit中,只会执行这一段
1 | if(!isset($_GET['flag']) && !isset($_POST['flag'])){ |
因为我们传入的get参数中没有flag,也没post传入任何参数,所以就直接带着$yds退出了,而yds中之前就保存了flag的值,到这里也就出结果了
最后附上一些调试截图方便理解
执行完get的foreach,此时yds变量已经变成了flag的值
不会执行其他的exit因为都不满足条件,此时就会带着yds,也就是flag的值退出