PHPMyAdmin4.8.1任意文件读取漏洞
这题是在BUUCTF平台里遇到的,题目是HCTF 2018的Warm Up.
给出的php代码如下:
1 |
|
对这个代码进行分析,发现会下面include $_REQUEST['file']
,但是需要绕过类emmm
的静态函数checkFile
。
分析这个函数,第一个:
1 | $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; |
只需要传入file
参数以及确保参数为string
类型即可过。
第二个:
1 | if (in_array($page, $whitelist)) { |
如果是source.php
或者hint.php
的话直接放行。
第三个:
1 | $_page = mb_substr($page,0,mb_strpos($page . '?', '?')); |
这个也是判断include
的文件是否为source.php
或者hint.php
,用于存在参数时的判断。
第四个:
1 | $_page = urldecode($page); |
一样的判断逻辑,只是进行了urldecode
。
整理一下,以上的判断第二个点、第三个点和第四个点都能返回true
,但是显然的第二个点无法利用。
而第三点显然存在利用方式。
构造file=hint.php?/../../../../ffffllllaaaagggg
,这样就可以在第三点返回一个true
从而使得绕过检测,又由于上面的file
参数进行了路径穿梭,从而使得任意文件包含的可能。
第四点利用,只需要将?
进行URL编码后即可:
file=hint.php%253f/../../../../ffffllllaaaagggg
- 本文标题:PHPMyAdmin4.8.1任意文件读取漏洞
- 本文作者:青 叶
- 创建时间:2021-05-30 12:29:28
- 本文链接:p/27057/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!