由ctf来看java报错的危害
很多java报错在我们渗透的时候经常会被发现,但由于没什么用,危害比较低被忽略,开发也很不愿意修改。
但从纵深防御的角度来说,多个小问题的结合就会产生严重的问题。此次遇到的一个ctf题就是一个例子。
题目来自 [RoarCTF 2019]Easy Java
进入题目后就是一个登录页面
一顿爆破得到用户名/密码 admin/admin888
然而非常失望,这思路根本不对
点击help看看
发现了一个java.io的报错,从报错和url上看非常像读取文件,这里就想到了任意文件读取,但是按理说应该有help.docx,为什么读取不出来呢
到这里其实卡了我很长时间,也没有get到出题人的意图,看了答案才想到一个问题。
下载文件得有文件流的传输,get一般不够长,所以都用post,改post试一下
成功了,但是依然没啥用,之前想到了任意文件读取,所以试试
虽然没有读取到/etc/passwd但是出现了java报错,其中赫然写着ctf这个包的引用路径,而且此web容器为tomcat,所以先试试默认路径/WEB-INF/web.xml
果然有这个controller,那直接读取源码试试
还是报错了,说明源码路径可能被修改,但这就没办法了吗?
答案当然是否定的,java作为编译语言,它会形成字节码文件,存储在classes文件夹下,读取试试
读取到了,把它下载下来,由于idea对于class文件可以进行反编译且支持较好,所以直接得到反编译后的源码