干货 | 利用VB.NET反射执行任意系统命令
2022-11-4 09:23:30 Author: dotNet安全矩阵(查看原文) 阅读量:16 收藏

VB.NET反射机制和C#大同小异,只在语法上稍微有些不同,利用Type.GetType类可以获得对象的类型,此包含对象的所有要素方法、构造器、属性等等,此类有6个重载方法,第一个参数指定程序集名typeName,后面两个布尔型参数分别为throwOnError, ignoreCase,表示是否抛出异常,忽略大小写,如下代码

System.Type.GetType("System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", True, True)

笔者关注到另外一个ReflectionOnlyGetType类,它与GetType类不同之处在于只是显示反射上下文内容,不能够执行代码

public static Type ReflectionOnlyGetType(string typeName, bool throwIfNotFound, bool ignoreCase)        {            StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;            return RuntimeType.GetType(typeName, throwIfNotFound, ignoreCase, reflectionOnly: true, ref stackMark);        }

最后用Activator.CreateInstance创建实例化对象执行反射,具体使用方法请跟随笔者一探究竟

1.1 使用方法

1.2 工具化

后续工具发布会发布在星球里,请关注dotNet安全矩阵星球


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyOTc3NTQ5MA==&mid=2247487017&idx=1&sn=7757c8b0e31035754427d74cf5be0c58&chksm=fa5aa0c4cd2d29d2c06c0880dd94c35710fecfa86210eab2c8a984309c0a418e13e9e2057d72#rd
如有侵权请联系:admin#unsafe.sh