/ reverse

breizhctf2k16 - the beginnings

Ce chall commence par un binaire à télécharger, en l'éxécutant on remarque que le binaire semble générer une chaine de façon aléatoire

guy@kali:/home/ctf/breizhctf2016$ ./thebeginnings 
Z_J_niIrtRehD_nH_tieel_nEi_r_ESxiBiT{osesXftH}ougXgyIe_CnecBLetTv_
guy@kali:/home/ctf/breizhctf2016$ ./thebeginnings 
Heer{BgS_sCrgRfAtiiv_suLi0F_B__ZyXxsnT_oiciehXiloHToIt__nutEeeenDE0onJIer_
guy@kali:/home/ctf/breizhctf2016$ 

un petit coup de objdump et on remarque que le main créer une chaine de caractere avec des instructions ̀mov

...
...
...
  400876:	b8 58 00 00 00       	mov    $0x58,%eax
  40087b:	88 45 da             	mov    %al,-0x26(%rbp)
  ...
  ...
  ...
$0x0,%eax
  400893:	88 45 dd             	mov    %al,-0x23(%rbp)
  400896:	bf 00 00 00 00       	mov    $0x0,%edi
  40089b:	e8 60 fc ff ff       	callq  400500 <time@plt>
  4008a0:	89 c3                	mov    %eax,%ebx
  4008a2:	e8 19 fc ff ff       	callq  4004c0 <getpid@plt>
  4008a7:	01 d8                	add    %ebx,%eax
...
...

allons voir ce qu'il se passe avant l'execution de time à l'aide gdb

gdb-peda$ disas main
...
...
   0x000000000040089b <+645>:	call   0x400500 <time@plt>

...
...
gdb-peda$ break *main+645
Breakpoint 1 at 0x40089b
gdb-peda$ r
[------------------------------------stack-------------------------------------]
0000| 0x7fffffffe790 --> 0x7fffffffe8f8 --> 0x7fffffffebac ("/home/ctf/breizhctf2016/thebeginnings")
0008| 0x7fffffffe798 --> 0x100000000 
0016| 0x7fffffffe7a0 ("BREIZHCTF{Just_A_Little_Exercise_Before_Diving_Into_Serious_Thing_Honey_X0X0}")