Sto cercando di imparare lo sfruttamento binario e ho pensato di usare campioni online per allenarmi. Eccone uno che ho trovato, e non riesco a vedere per capire come sfruttarlo.
int main(int argc, char** argv[])
{
uint32_t number = 0;
uint32_t guess = 0;
char input[8] = {0};
FILE* devRand = fopen("/dev/urandom", "rb");
if(devRand == NULL)
{
printf("I can't think of a number");
return EXIT_FAILURE;
}
fread(&number, 1, 4, devRand);
fclose(devRand);
printf("What number am I thinking of?\n");
fflush(stdout);
bool correct = false;
do
{
fgets(&input[0], 28, stdin);
guess = strtol(&input[0], NULL, 16);
if (number == guess)
{
correct = true;
printf("Yes!\n");
fflush(stdout);
system("/bin/sh");
}
else
{
printf("No\n");
fflush(stdout);
}
}
while(!correct);
return EXIT_SUCCESS;
}
Sarebbe gradito se qualcuno potesse darmi una spiegazione dettagliata dell'uso, come funziona e come può essere mitigato.
Grazie!