- 来源:Root-Me
- 题型:Web-Server
- 题目:Local File Inclusion
- 分数:30 Points
水题。关于 PHP 的 LFI 漏洞前置知识可以参考这篇文章: 【Local File Inclusion (LFI) — Web Application Penetration Testing】
但是不需要用到这些知识也能解题。
开启挑战后,随意点击发现一个规律:
| sysadm | reseau | esprit | crypto | coding | archives |
页头的 tag 其实就是 【目录】- 点击 tag 后出现的列表就是文件夹内的 【文件】或【子目录】
- 页面 URL 会随着点击变成
http://challenge01.root-me.org/web-serveur/ch16/?files=目录&f=文件
- 当点击【文件】时,会在页面输出文件内容
特别地,我发现如果点击【文件】后若没有输出文件内容,则这可能是【子目录】而非文件,
如: http://challenge01.root-me.org/web-serveur/ch16/?files=crypto&f=archives
此时可以把页面路径中代表【文件】的 f
(实际上是【子目录】)拼接到代表【目录】的 files
串成路径:
http://challenge01.root-me.org/web-serveur/ch16/?files=crypto/archives
这样就可以查看【子目录】下的文件了:
题目要求找到 admin 的内容,但是在所有 tag 及其下的文件都没看见 admin 。
考虑到可能需要路径穿越,于是尝试构造 payload :
http://challenge01.root-me.org/web-serveur/ch16/?files=..
得到上级目录下的文件列表,发现其中存在 admin
,但是点击后没有打印内容,怀疑 admin
其实是【子目录】:
于是构造新的 payload :http://challenge01.root-me.org/web-serveur/ch16/?files=../admin
发现 admin
目录下的的 index.php
文件,打开后得到密码,完成挑战:
答案下载
flag 下载后的 flagzip 的文件需要手动更改后缀为
*.zip
,然后解压即可(为了避免直接刷答案)