Ответ 1
В PowerShell вы сделаете так:
"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program
Я ищу для ввода некоторого ввода String в небольшую программу C в командной строке Windows. В bash я мог бы использовать
$ printf "AAAAA\x86\x08\x04\xed" | ./program
По сути, мне нужно что-то избежать этих шестнадцатеричных чисел в командной строке.
Есть ли эквивалентная или аналогичная команда для printf
в командной строке /powershell?
Спасибо
В PowerShell вы сделаете так:
"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program
Недавно я сам задал тот же вопрос и решил, что для тех, кто разрабатывает эксплойты 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", если она вам нужна.