命令提示符中等同于Bash的'printf'命令是什么?

8

我希望将一些字符串输入导入到Windows命令提示符中的一个小C程序中。在bash中,我可以使用

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

基本上,我需要一个能够在命令提示符中转义十六进制数的工具。在命令提示符/PowerShell中是否有类似于printf的等效或相似命令?感谢您的帮助。

1
为什么这被标记为漏洞利用...? - Lekensteyn
@Lekensteyn:看看转义字节。很容易想象这可能是一些代码。 - 0xC0000022L
因为我需要它来利用缓冲区溢出漏洞。而经常利用这些漏洞的人可能知道答案... - Calum Murray
2个回答

6
在PowerShell中,您可以这样做:
"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program

\x08在bash中确实是字符8的转义符,所以后面的例子是正确的。 - Joey
是的,我认为第二个例子就是我要找的。谢谢Keith和Joey! - Calum Murray

2

我最近也遇到了同样的问题,并决定对于开发Windows漏洞利用程序的人来说,安装cygwin是值得的 :)

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

#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"字符串,则扩展它并不难。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接