简单说一下这个题,因为某些原因让我对他印象深刻。
题目进来是这样的,但是这里有一个clear函数,它是一个自定义函数。就在这个页面使用ctrl+f搜索clear最后一个就是clear的声明。它被藏在页面最下方。
解题:
这里有extract函数,简单来说extract函数会把数组的key转换成变量名,把数组的value转换成这个新变量的值。比如数组里有key=1,那么经过extract处理后就变成了$key=1,这个可以通过打印全局变量查看到。
题目代码里说了有后门,但是这个后门其实是无法利用的。原因是:extract函数处理出的结果最终都是string类型的变量,而本地使用后门之前的if判断语句是三个等号的强类型比较,因此无论怎么操作$key的值都是无法进入到后门的。
所以只能使用另外的else里的代码。结合clear函数的声明得到最终payload
最后用post传递下面的参数,其实还是使用了extract函数,只是是为了else里面代码执行做准备
POST:
die=0&clear=;cp flag.php 1.txt