.NET 表达式树(Expression Tree) 执行命令

admin 2023年2月23日01:39:21评论16 views字数 1827阅读6分5秒阅读模式

0x01 基本介绍

.NET 表达式树是存储委托的容器,是一种存取Lambda表达式的数据结构,位于System.Linq.Expression命名空间下,基本语法如下

1、定义参数

ParameterExpression fromParameter = Expression.Parameter(typeof(string), "from");

2、定义局部变量

ParameterExpression partsVariable = Expression.Variable(typeof(string[]), "parts");ParameterExpression iVariable = Expression.Variable(typeof(int), "i");ParameterExpression lengthVariable = Expression.Variable(typeof(int), "length");ParameterExpression arrayVariable = Expression.Variable(typeof(int[]), "array");

3、赋值常量

Expression.Assign(iVariable, Expression.Constant(10))

4、编译表达式

Func<string, int[]> convertToArray = Expression.Lambda<Func<string, int[]>>(block, fromParameter).Compile();

Expression类中提供了大量的工厂方法,这些方法负责创建以上各种表达式对象,.NET内置提供了很多表达式,具体详情如图1

.NET 表达式树(Expression Tree) 执行命令

0x02 执行命令

这里我们仍要使用诸多表达式中与众不同的LambdaExpression。.Compile是将Lambda表达式的表达式树真的编译成一个.NET方法,Expression.Call表示调用方法,调用Process类启动进程如下

var param = Expression.Parameter(typeof(Object), null);            var method = Expression.Call(                typeof(System.Diagnostics.Process).GetMethod("Start", new Type[] { typeof(String) }),                Expression.Constant("calc")                );            var lambda = Expression.Lambda<Action<Object>>(method,param);            lambda.Compile()(new Object());

.NET 表达式树(Expression Tree) 执行命令

文章涉及的工具和PDF已打包发布在星球,欢迎对.NET安全关注和关心的同学加入我们 [dotNet安全矩阵] ,在这里能遇到有情有义的小伙伴,大家聚在一起做一件有意义的事。

.NET 表达式树(Expression Tree) 执行命令

免责声明 由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号dotnet安全矩阵及作者承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

0x03 星球优惠活动

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展

.NET 表达式树(Expression Tree) 执行命令

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等,后续还会倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

.NET 表达式树(Expression Tree) 执行命令

.NET 表达式树(Expression Tree) 执行命令

.NET 表达式树(Expression Tree) 执行命令

dotNet安全矩阵知识星球 — 聚焦于微软.NET安全技术,关注基于.NET衍生出的各种红蓝攻防对抗技术、分享内容不限于 .NET代码审计、 最新的.NET漏洞分析、反序列化漏洞研究、有趣的.NET安全Trick、.NET开源软件分享、. NET生态等热点话题、还可以获得阿里、蚂蚁、字节等大厂内推的机会.

原文始发于微信公众号(dotNet安全矩阵):.NET 表达式树(Expression Tree) 执行命令

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月23日01:39:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   .NET 表达式树(Expression Tree) 执行命令http://cn-sec.com/archives/1564332.html

发表评论

匿名网友 填写信息