8

Windowsのコマンドプロンプトで、文字列入力を小さなCプログラムにパイプすることを検討しています。bashで使用できます

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

基本的に、コマンドプロンプトでこれらの16進数をエスケープするための何かが必要です。

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 に答える