Bash ‘printf’ équivalent pour l’invite de commande?

Je cherche à diriger une entrée Ssortingng vers un petit programme C à l’invite de commande de Windows. En bash je pourrais utiliser

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

Essentiellement, j’ai besoin de quelque chose pour échapper à ces nombres hexadécimaux dans l’invite de commande.

Existe-t-il une commande équivalente ou similaire pour printf dans l’invite de commande / powershell?

Merci

Dans PowerShell, vous le feriez de cette façon:

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

Je suis récemment venu avec la même question et a décidé que pour quelqu’un qui développe des exploits Windows, il vaut la peine d’installer cygwin 🙂

Sinon, on pourrait construire un petit programme C imitant les fonctionnalités de printf :

 #include  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; } 

Le programme ne gère que les chaînes "\ xAB \ xCD", mais il ne devrait pas être difficile de les étendre pour gérer les chaînes "AAAAA \ xAB \ xCD" si vous en avez besoin.