我希望在Windows的命令提示符中将一些String输入传递给一个小型C程序。在bash我可以使用
$ printf "AAAAA\x86\x08\x04\xed" | ./program
基本上,我需要在命令提示符中转义那些十六进制数字。
命令提示符/ powershell中是否有printf
的等效或类似命令?
由于
答案 0 :(得分:6)
在PowerShell中,您可以这样做:
"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program
答案 1 :(得分: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”字符串并不困难。