赛博音乐会

我觉得界面做得挺好看的,你觉得呢 :)

Ctrl+U 看看源码,发现可疑的 get_resource.php。猜测可以任意文件读,访问以下任意一个 URL 以确认:

/get_resource.php?path=/etc/passwd
/get_resource.php?path=../../../../../../../../../../../../../../../../../etc/passwd

解释:/etc/passwd 是 Linux 系统一定存在的一个文件,且任意用户都可读。如果我们能读到 /etc/passwd,则可以确定存在任意文件读漏洞。

对第二行 payload 的解释:如果已经走到根目录 /,还接受到 ../ 就忽略。所以我们使用很多个 ../ 确保走到根目录,而不用猜测目录级数。

利用任意文件读漏洞,我们可以获取 flag。读出 /flag.txt 即可。


正式 CTF 竞赛中,一般无法直接读到 flag,而是通过任意文件读收集信息。有一个 fuzz 列表可供参考: https://github.com/ev0A/ArbitraryFileReadList