老样子 F12 检查
发现 source.php 被注释掉了
在 url 直接进行访问
可以看到是源代码
发现 high_file 泄漏,
访问 hint.php,可以看到 flag 在那里
回头分析源代码,我们发现最底部的if语句为执行条件,有三个条件,第一个判断文件不能为空(检查是否传了file参数),第二这个传的参数是字符串,第三要过白名单检测,过了之后包含 隐藏了flag的文件。我们再看上面的if语句,白名单是hint.php,又有mb_strpos和mb_substr截取内容,碰到?就截止,所以我们只需要输入 source.php?file=source.php?即可绕过白名单检测
所以进行目录穿越即可获得flag
关于.和/的解释:
. 表示当前目录
. .表示当前目录的上一级目录。
. / 表示当前目录下的某个文件或文件夹,视后面跟着的名字而定
. . / 表示当前目录上一级目录的文件或文件夹,视后面跟着的名字而定。
例如:
文件夹 a
下面有 文件夹b c 和文件 d。
文件夹b下面有e.php 和文件f。
则e中的 . 表示 文件夹b
./f 表示b下面的文件f。
. .表示a文件夹。
. ./d 表示a文件夹下的d文件。
资料借鉴