0x01 前言
这个技巧感觉挺有意思,还是在微信群里的赛博回忆录,讨论的时候看到的一篇文章
接着和钧钧讨论的时候发现作者是这样玩的
感觉挺有趣,深深的破坏了我对file://这个协议的看法
以前一直以为只能读文件,没想到在java里面还能读目录,特记录一波
0x02 正文
平时我对file协议就是读文件
也就是类似file:///etc/passwd这样
但是在看那个文章的时候
看到作者是类似这样玩的file:///etc/
然后钧和我也试了一下,并且成功把目录列了出来
# 首先我们先看一个例子代码
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
public class test {
public static void main(String[] args) {
try {
// 漏洞利用点
String url = "file:///etc/";
// 实例化url的对象
URL u = new URL(url);
//打开一个URL连接,并运行客户端访问资源。
URLConnection connection = u.openConnection();
connection.connect();
connection.getInputStream();
StringBuilder response = new StringBuilder();
//获取url中的资源
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
response.append(line + "\n");
}
in.close();
System.out.print(response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
0x03 debug跟踪
然后就好奇啊,为什么其它的语言不行,java可以所以就想跟一下
可以清楚的看到,不是ftp的话就进入下面的else所以直接跟进去即可
0x04 总结
没事多看看群是有好处的 :)