0x00 前言

参考Micro8系列第四十五课:https://micro8.gitbook.io/micro8/contents-1/41-50/45-jie-jue-bat-yi-ju-hua-xia-zai-payload-hei-chuang

0x01 BAT一句话下载payload

在实战中,针对不同的环境执行BAT的问题,可能需要不同的方案来实现。

bat.vbs:

1
2
3
4
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c bat.bat"
oShell.Run strArgs, 0, false

运行该VBS脚本即可执行bat文件中的指令:

1
2
3
D:\tmp>cscript bat.vbs
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

但是前面bat.vbs代码过长,需要追加写入的话需要简化下代码:

1
CreateObject("Wscript.Shell").Run "bat.bat", 0, True

如果需要在目标机上执行多个bat,则需要把代码中的bat.bat变成变量的形式:

1
2
3
4
5
6
7
8
9
10
11
If WScript.Arguments.Count >= 1 Then
ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
Arg = WScript.Arguments(i)
If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
arr(i) = Arg
Next

RunCmd = Join(arr)
CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

此时运行需要加上参数:

1
2
3
D:\tmp>cscript bat.vbs bat.bat
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。