反射来命令执行存在的一些问题
Posted 番茄酱料
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射来命令执行存在的一些问题相关的知识,希望对你有一定的参考价值。
一.利用Runtime进行反射
java.lang.Runtime.getRuntime().exec("")
若使用该paylaod,比如若依利用点如下:
Object bean = Class.forName(beanName).newInstance();
invokeMethod(bean, methodName, methodParams)
想要通过Class.forName(beanName).newInstance()成功实例化,必须满足类至少有一个无参的构造函数(这就是它的使用局限性)
也就代表有如下两个条件
1.public
2.无参
而Runtime类的构造函数是private的,不满足public条件,因此使用payload java.lang.Runtime.getRuntime().exec(“”),会报错。
二.利用ProcessBuilder进行反射
ProcessBuilder满足public,但是不满足无参构造方法
那么问题来了,我们平时写都是上面这样子,没有报错,也没有传进去参数,为什么说它没有无参构造函数,我们跟进去看看
进来后可以看到不是无参构造函数,只不过可以不加参数而已
以上是关于反射来命令执行存在的一些问题的主要内容,如果未能解决你的问题,请参考以下文章