java安全学习篇-3-反射
文章发布时间:
最后更新时间:
最后更新时间:
参考文章:代码审计知识星球phithon的文章(java安全漫谈 - 03.反射篇(3))
java安全学习篇-3-反射(3)
利用之一:
我们已经知道了,通过**getConstructor 可以调用构造函数,无论其是否有参,
这里用一个新的执行命令的方式ProcessBuilder **
白嫖一段代码:
1 |
|
这里,我们通过start() 直接执行了命令
如不使用强制转换,也可以使用反射来获取start()方法
1 |
|
p牛说”但是,我们看到,前面这个Payload用到了Java里的强制类型转换,有时候我们利用漏洞的时候(在表达式上下文中)是没有这种语法的。”
思考了一下,可能是指在沙箱环境中无法使用强制转换
其二:
ProcessBuilder 还有一种重载方式**public ProcessBuilder(String… command) **
这里我们要用到可变长参数 ,因为我们参数数量是不确定的,java处理可变长参数的方法是编译成数组
1 |
|
于是,我们传参给getConstructor只需要传String[].class这样就能用第二种重载方法