VA - CS RCE
蹭蹭,学习
复现
先上结论,在师傅的文章哩狠狠地学习了,于是在本地尝试找了一下链子,也是第一次尝试吧,最后结果是好的!
过程
入口
复现Demo
1 | import javax.swing.*; |
整个过程下来收获颇多。按文章中提到的,可以在JLabel中写入<html><object classid='javax.swing.JLabel'><parame name='Text' value='hahaha'>
,这里在实际测试过程中遇到了些问题,最后构造JLabel jLabel = new JLabel("<html><object classid=\"javax.swing.JLabel\"><param name=\"text\" value=\"hhhhhhhh\"></object>");
才能正常显示。这里有一些要注意的:name字段的值,对应setXXX的XXX部分只能有一个,例如setString可以但是setStringVar不行,同时XXX部分首字母大写的在name处需要全小写,而全大写的需要全大写,具体可以在Object v = attr.getAttribute(props[i].getName());
处下个断点看props和attr。后面的debug过程就省略掉啦。
找链子
这里一开始在rt.jar下面翻了很久很久,后来被hxd提醒把cs.jar导进来一起看。回顾一下文章中说的条件:
- classid传入需要实例化的类,必须是继承自Component
- 必须有无参构造方法
- 必须存在一个setXXX方法
- setXXX只接受一个String类型的参数
今天学到的小技巧,在IDEA里CTRL+H可以看一个类的继承关系,方便筛查!!然后就是慢慢找啦,符合条件的不多,利用正则set\w*\(String \w*\).*\{
快速看!