Bat

这就是我们常用的Bat脚本,全名为批处理文件,脚本中就是我们在CMD中使用到的命令,这里提一个小问题:CMD的命令行执行命令的优先级是.bat > .exe,那么假如我放一个cmd.bat在system32目录下,那么优先执行的是cmd.bat,这里面的内容就变得不可描述起来了

VBscript

执行vbs就是常说的vbscript,是微软为了方便自动化管理windows而推出的脚本语言,这里了解一下即可,不是文章重点。
一个小例子通过vbs操作WMI Set wmi = GetObject("winmgmts:") Set collection = wmi.ExecQuery("select * from Win32_Process") For Each process in collection WScript.Echo process.getObjectText_ Next

Powershell

这就是我们的主角,在现在和未来一定是powershell占据主要地位(对于这一点搞Win多一点的朋友一定不会怀疑),首先我们来看一个简单的例子
script.ps1: # 脚本内容 functiontest-conn{Test-Connection-Count2-ComputerName$args} # 载入脚本文件 .script.ps1 # 调用函数 test-connlocalhost

Powershell执行策略

那么你可能会在调用脚本的时候出现报错,这是powershell的安全执行策略,下面我们来了解一下执行策略:PowerShell 提供了 Restricted、AllSigned、RemoteSigned、Unrestricted、Bypass、Undefined 六种类型的执行策略简单介绍各种策略如下:
那么我们如何绕过这些安全策略呢?下面提供几种方法,网上还有很多的绕过方法,大家可以自行研究:

powershell的脚本调用方法:

如果脚本是直接写的代码而不是只定义了函数那么直接执行脚本.script.ps1即可powershell的脚本调用方法:
但是如果是载入里面的函数需要.+空格+.script.ps1
或者使用Import-Module .script.ps1, 这样才能直接使用脚本的函数
通过控制台执行Powershell
对于我们安全测试人员通常获取到的一个Shell是CMD的, 那么我们想要尽可能少的操作就可以直接通过控制台来执行powershell的命令, 那么先来看一个简单的例子
可以看到我们通过CMD界面执行了Powershell的代码, 那么其实这样的执行方式在真实的安全测试环境中利用更多, 下面是一个Powershell通过这种方式执行的所有可选的参数:
PowerShell[.exe] [-PSConsoleFile