分类目录归档:powershell

PowerShell启动进程时隐藏窗口

方法一


 

在C#的System.Diagnostics.ProcessStartinfo类可以支持设置进程启动时隐藏窗口,今天再来分享一个使用WMI对象的的方法来隐藏启动程序的窗口。使用Win32_Process可以直接启动一个进程,但是缺少对这个进程的控制:比如让它隐藏自己的窗口。下面的的例子可以做到这一点:

function start-hiddenproc {
    [CmdletBinding()]
    param(
    [string]$processname = 'notepad.exe'
    )
 
    $startclass = Get-CimClass -ClassName Win32_ProcessStartup
    $startinfo = New-CimInstance -CimClass $startclass -Property @{ShowWindow = 0} -ClientOnly
 
    $class = Get-CimClass -ClassName Win32_Process
    Invoke-CimMethod -CimClass $class -MethodName Create -Arguments @{
    Commandline = $processname;
    ProcessStartupInformation = [CimInstance]$startinfo
    }
}

该函数将要执行的进程的路径作为参数,这也方便你在脚本中加入验证路径是否存在的逻辑。

继续阅读

PowerShell:函数、脚本、作用域

脚本所体现的是PowerShell的编程特性,是任务自动化的基础。函数是比脚本粒度更细的代码复用单元,可以定义在命令行中或者脚本中。作用域就是变量和函数的作用范围,是执行上下文的划分。

函数

函数就是命名的命令列表,与一般编程语言中的函数概念具有相同的范畴。函数中不但可以有简单命令,还可以有控制流程的命令,如if、while、switch等。函数可以有匿名参数或者命名参数列表。命令参数列表可以用大括号或者Param关键字定义。匿名函数可以使用$Args变量来访问。函数也可接收来自管道的对象作为输入,管道对象可以通过$input变量类访问。

在脚本中定义的函数,可以定义在#require命令和Param关键字之后的任何位置,但要定义在调用之前。还有,自定义的函数不会自动运行,需要被明确调用。可以使用filter或者function定义函数,用filter关键字定义的函数比较简单,而使用function关键字定义的函数可以有更加复杂的功能。

简单函数定义示例如下:

function SayHello
{
   "Hello"
}

函数调用方法与使用Cmdlet方法相似,输入SayHello,并回车。则结果为Hello。

继续阅读

Powershell 提权框架-Powerup

0x00 简介

通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的Powershell框架-Powerup,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。

继续阅读