wtorek, 8 lipca 2025

picoCTF - Bbbbloat

W tym poście chciałbym opisać rozwiązanie zadania Bbbbloat z działu Reverse Engineering picoCTF. 

Do zadania dołączono plik wykonywalny bbbbloat. Po jego uruchomieniu wyświetla się pytanie:

  1. What's my favorite number? 1
  2. Sorry, that's not it!

Plik został skompilowany jako:

  1. $ file ./bbbbloat
  2. ./bbbbloat: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=db1dc86836c3e0e4140eb30914db4af5bce7cb18, for GNU/Linux 3.2.0, stripped

W celu uruchomienia tego programu pod Windowsem można użyć np. WSL, bądź VirtualBoxa z linuxem. 

Można też użyć terminala dostępnego w picoCTF. Należy pamieć, żeby po pobraniu pliku ustawić mu odpowiednie uprawnienia. 

  1. wget <link do pliku>
  2. chmod +x bbbbloat

Program pyta o ulubiony numer. Metodą zgadywania raczej nic tutaj nie osiągnę, trzeba uruchomić jakiś program do decompilacji i sprawdzić co uda się otrzymać w taki sposób. Można użyć narzędzia online. Gdzie należy wyszukać ciągów jakie się wyświetlają podczas uruchamiania programów:


Można też użyć np. programu Cutter



Tutaj jest to nie co mniej widoczne, ale też da się odnaleźć. 

Jak widać na powyższych przykładach porównanie następuje z liczbą 0x86187 (549255). Więc można założyć, że jeśli warunek zostanie spełniony to nastąpi przejście do dalszej części programu, bądź nawet wyświetlenie flagi. 

Teraz po wprowadzeniu tej liczby w terminalu otrzymuje:

  1. ./bbbbloat
  2. What's my favorite number? 549255
  3. picoCTF{<tu_flaga>}