8

我希望在 Windows 的命令提示符中将一些字符串输入通过管道传输到一个小型 C 程序。在 bash 我可以使用

$ printf "AAAAA\x86\x08\x04\xed" | ./program

本质上,我需要一些东西来在命令提示符中转义那些十六进制数字。

printf命令提示符/powershell 中是否有等效或类似的命令?

谢谢

4

2 回答 2

6

在 PowerShell 中,您可以这样做:

"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program
于 2011-03-13T14:54:21.013 回答
2

我最近自己提出了同样的问题,并决定对于开发 Windows 漏洞利用的人来说,值得安装 cygwin :)

否则,可以构建一个模仿printf的功能的小型 C 程序:

#include <string.h>

int main(int argc, char *argv[])
{
    int i;
    char tmp[3];

    tmp[2] = '\0';

    if (argc > 1) {
        for (i = 2; i < strlen(argv[1]); i += 4) {
            strncpy(tmp, argv[1]+i, 2);
            printf("%c", (char)strtol(tmp, NULL, 16));
        }
    }
    else {
        printf("USAGE: printf.exe SHELLCODE\n");
        return 1;
    }

    return 0;
}

该程序仅处理“\xAB\xCD”字符串,但如果需要,将其扩展为处理“AAAAA\xAB\xCD”字符串应该不难。

于 2015-11-15T17:24:22.370 回答