Vault-breaker
Descrição do Desafio:
Passo a Passo da Solução
1. Análise do arquivo fornecido
void new_key_gen(void)
{
int iVar1;
FILE *__stream;
long in_FS_OFFSET;
ulong local_60;
ulong local_58;
char local_48 [40];
long local_20;
local_20 = *(long *)(in_FS_OFFSET + 0x28);
local_60 = 0;
local_58 = 0x22;
__stream = fopen("/dev/urandom","rb");
if (__stream == (FILE *)0x0) {
fprintf(stdout,"\n%sError opening /dev/urandom, exiting..\n",&DAT_00101300);
/* WARNING: Subroutine does not return */
exit(0x15);
}
while (0x1f < local_58) {
printf("\n[*] Length of new password (0-%d): ",0x1f);
local_58 = read_num();
}
memset(local_48,0,0x20);
iVar1 = fileno(__stream);
read(iVar1,local_48,local_58);
for (; local_60 < local_58; local_60 = local_60 + 1) {
while (local_48[local_60] == '\0') {
iVar1 = fileno(__stream);
read(iVar1,local_48 + local_60,1);
}
}
strcpy(random_key,local_48);
fclose(__stream);
printf("\n%s[+] New key has been genereated successfully!\n%s",&DAT_00103142,&DAT_001012f8);
if (local_20 != *(long *)(in_FS_OFFSET + 0x28)) {
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}
return;
}2. Exploit
Flag
Autor da WriteUp
Atualizado