打开链接发现是一个笑脸,第一步F12查看网页源代码,发现source.php
访问一下,出现了源码
根据代码可以得出,如果参数file符合checkFile方法的检查规则,就会包含文件,先试一下包含hint.php
符合检查规则,并且发现flag就在ffffllllaaaagggg中
但是尝试包含失败,网上查了一下,发现有很多都说url二次编码绕过,这样做也没错,但是正解却是目录穿越漏洞,
正常的?就可以,不用编码,这是include的一个特性
如果include包含的文件中含有路径,就会包含最后一个/后面的文件,因此直接构造payload:source.php?file=hint.php?/../../../../../../ffffllllaaaagggg
本来是会包含hint.php文件的,但是后面出现了../,就包含了最后面的ffffllllaaaagggg
至于中间使用几层目录,纯粹是试出来的