一、PowerShell
1、简介
Windows PowerShell 是 Microsoft 创建的基于任务的自动化命令行 Shell 和相关脚本语言。它是Microsoft 的新 Shell,它将旧的命令提示符(CMD)功能与具有内置系统管理功能的新脚本指令集结合在一起。
2、进入 powershell
win + R,输入 powershell 即可进入【不区分大小写】:
查看 powershell 的版本:
3、ps1 文件
ps1 文件即包含多行 powershell 命令的脚本,以 .ps1 为扩展名,对于一些重复性工作,比如文件复制、删除、压缩等,用一些基于 windows 的脚本会非常方便。之前用 cmd,即执行 bat 脚本。现在 powershell 脚本更强大,powershell 脚本扩展名为.ps1
4、ps1 文件的执行演示
写了一个脚本 carrot.ps1,大家可以拿去演示:
$wy = New-Object -ComObject WScript.Shell
# object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
$love= $wy.popup("Do you sure love FWY ?
If you are too shy to express your love, the system will confirm it for you after twenty seconds without clicking.
Wish you both happiness! ",20,"Confirm your love",0 + 32)
if ($love -eq 1) {
Write-Host "Congratulations to ZAX !
She made the same choice as you did !" -ForegroundColor white -BackgroundColor red
}
存放目录如下图:
执行:
点击确定:
如果把此文件移动到上一级目录:
输入如下命令:
..\carrot.ps1
如果把此文件放到 D盘,输入如下命令执行:
二、PowerShell 的执行策略
PowerShell 执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶意脚本的执行。在非 Windows 计算机上,默认执行策略为 Unrestricted 且无法更改:
上图来源:
关于执行策略 - PowerShell | Microsoft Docs介绍 PowerShell 执行策略并说明如何管理它们。https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2&viewFallbackFrom=powershell-6
1、查看策略及更改策略
切换执行策略:
Set-ExecutionPolicy 执行策略名字 -Scope CurrentUser
开发人员需频繁使用 powershell 脚本,因此允许本地脚本运行,用 RemoteSigned 即可:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
如果不加 -Scope ,默认对本机的执行策略进行修改,会报错:
必须使用管理员的 PowerShell 来进行修改:
2、策略对运行脚本的影响演示
更改当前用户执行策略为 restricted 不能执行脚本,更改后可执行:
三、 PowerShell 脚本的渗透
可以看到将执行策略设为 Restricted 时,不能执行 powershell 脚本
渗透的思想就要绕过这种模式
采用如下方式,可以绕过并完美执行脚本:
PowerShell.exe -ExecutionPolicy Bypass -File .\carrot.ps1
**完美执行,可以看到此时执行策略依然是 restricted,成功绕过 **
附录
1、cmd、PowerShell 和 Window Terminal 的区别
cmd :命令行(command line),是命令执行窗口,用 win + R 回车启动
PowerShell :cmd 的升级版,或者说是 cmd 的超集,类似 Linux 系统的 bash 一样,都是基于壳程序 shell,如下图,同样打开服务,PowerShell 支持使用cmdlet命令格式(动词-名词),此外还有 get-help、get-command 等命令
两者对比举例,PowerShell更优秀:
1、命令
同样,PowerShell 兼容原来的 cmd 使用的命令格式:
**2、管道 **
即前一个命令的输出作为后一个命令的输入:
powershell:
管道基于对象
筛选 mode 和 name:
cmd:
也有管道,但是基于文本,无法细分
Window Terminal:微软在Build 2019大会上发布的面向 Windows10 的新命令行程序,Terminal 集成了 Windows 上的 PowerShell、cmd、Windows Linux子系统(WSL)三大环境
2、Shell 与 终端
终端:接受用户的输入,并传递给 Shell 程序,接受程序输出并展示到屏幕
Shell:接受用户的命令,并解析给操作系统执行,将结果输出到终端,shell 这个外壳 是用户与操作系统(内核)之间的桥梁
3、Linux 中的 Shell
Bash和shell_take it down的博客-CSDN博客_bash shell一、什么是shell,什么是bash?管理计算机硬件的其实是内核,用户正是通过shell来跟内核通信的,从本质上说shell是一个能执行各种命令的宏处理器。而bash(/bin/bash)就是linux默认的shell。...https://blog.csdn.net/myydebk666/article/details/82977383什么是shell和bash?_Garrick不想996的博客-CSDN博客_bash shell是什么意思在Linux中图形界面不是很强,一般都只是直接通过命令窗口来进行系统控制的,所以shell就显得特别重要。你也可以简单的将shell理解为命令行,与之相关的还有shell脚本,就是shell能识别的一连串命令行。说了那么多,来看个官方定义:Unix shell:一种壳层与命令行界面,是Unix操作系统下传统的用户和计算机的交互界面。普通意义上的shell就是可以接受用户输入命令的程序。它之所以...https://blog.csdn.net/qq_44537267/article/details/104960010?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3**以 Kali Linux 为例,查看系统支持哪些 shell:**
查看当前正在使用的 shell:
你明白 shell、bash 和 zsh 等词的真正含义吗? - 知乎导言最近花了点时间,把和 shell 有关内容都整理了一遍。如果你对这方面有些疑惑,这篇文章可以让你更好地理解它们的含义。阅读时间大概5分钟。 解释与编译编程语言没有编译型和解释型的区别,只能说某个语言常见…https://zhuanlan.zhihu.com/p/34197680
版权归原作者 白白净净吃了没病 所有, 如有侵权,请联系我们删除。