Windowsのコマンドプロンプトで、文字列入力を小さなCプログラムにパイプすることを検討しています。bashで使用できます
$ printf "AAAAA\x86\x08\x04\xed" | ./program
基本的に、コマンドプロンプトでこれらの16進数をエスケープするための何かが必要です。
printf
コマンドプロンプト/PowerShellに同等または同様のコマンドはありますか?
ありがとう
Windowsのコマンドプロンプトで、文字列入力を小さなCプログラムにパイプすることを検討しています。bashで使用できます
$ printf "AAAAA\x86\x08\x04\xed" | ./program
基本的に、コマンドプロンプトでこれらの16進数をエスケープするための何かが必要です。
printf
コマンドプロンプト/PowerShellに同等または同様のコマンドはありますか?
ありがとう
PowerShellでは、次のようにします。
"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program
私は最近、同じ質問を自分で思いついたので、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」文字列を処理するように拡張することは難しくありません。