【问题标题】:Bash 'printf' equivalent for command prompt?bash 'printf' 等同于命令提示符?
【发布时间】:2011-07-14 11:43:05
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

  • 为什么这个被标记的exploit...?
  • @Lekensteyn:查看转义字节。很容易想象这可能是一些代码。
  • 因为它利用了我需要的缓冲区溢出漏洞。经常利用它们的人可能知道答案...

标签: windows shell command-line powershell exploit


【解决方案1】:

在 PowerShell 中,您可以这样做:

"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program

【讨论】:

  • \x08 确实是 bash 中字符 8 的转义,所以后面的例子是正确的。
  • 是的,认为第二个例子就是我要找的。谢谢基思和乔伊!
【解决方案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”字符串应该不难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-18
    • 2013-12-05
    • 2014-12-26
    • 1970-01-01
    • 2011-12-24
    • 2021-06-30
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多