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.