INTRODUCTION: Halo rekan-rekan Cyber Security Enthusiasts, pada kesempatan kali ini saya ingin menulis tentang bagaimana cara menyelesaikan sebuah tantangan CTF (Capture The Flag) berjudul "Flag in Flame" dari forum PicoCTF. Premis dari tantangan ini adalah kita sebagai praktisi di sebuah tim SOC Analyst mendapatkan sebuah log file bukan berisi aktivitas log pada umumnya, melainkan tulisan teks block acak yang sangat panjang dan kita diminta untuk memecahkan apa yang berada di balik log file tersebut.

METHOD: Pertama kita perlu men-download file log yang disediakan oleh forum dengan perintah curl.

┌──(root㉿kali)-[/home/kali]
└─# curl -O "https://challenge-files.picoctf.net/c_amiable_citadel/53216672a2c2381d0ed77a981fbf595657b3a8be3f0e0edff71b33c1baa6c9d6/logs.txt"
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100  1.51M 100  1.51M   0      0 881.2k      0   00:01   00:01         880.9k

Setelah berhasil men-download, kita gunakan perintah file untuk mengidentifikasi konten dari log tersebut.

┌──(root㉿kali)-[/home/kali]
└─# file logs.txt
logs.txt: ASCII text, with very long lines (65536), with no line terminators

Dari perintah tersebut, file log tersebut mengandung teks ASCII. Kita bisa gunakan perintah xxd dengan pipe head untuk melihat header dari hexbytes dan teks ASCII.

┌──(root㉿kali)-[/home/kali]
└─# xxd logs.txt |head
00000000: 6956 424f 5277 304b 4767 6f41 4141 414e  iVBORw0KGgoAAAAN
00000010: 5355 6845 5567 4141 4134 4141 4141 5341  SUhEUgAAA4AAAASA
00000020: 4341 4941 4141 4168 3862 534f 4141 4541  CAIAAAAh8bSOAAEA
00000030: 4145 6c45 5156 5234 6e4f 7a39 3139 4d73  AElEQVR4nOz919Ms
00000040: 795a 556e 6950 334f 6359 2b49 464a 2b36  yZUniP3OcY+IFJ+6
00000050: 6f75 7157 4271 6f61 7574 4459 526d 4e36  ouqWBqoautDYRmN6
00000060: 656d 6661 5a6d 6c63 306d 6932 2b37 7850  emfaZmlc0mi2+7xP
00000070: 4e4a 4a2f 474a 2f34 5276 4a74 4835 646d  NJJ/GJ/4RvJtH5dm
00000080: 5131 7662 4875 344d 7039 6b7a 6a51 5947  Q1vbHu4Mp9kzjQYG
00000090: 6f68 756f 416b 7268 3174 5766 7973 7949  ohuoAkrh1tWfysyI

Teks ASCII tersebut berisi alfa-numerik acak yang kemungkinan adalah encode berbasis base64. Kita bisa copy dan decode line pertama dari teks ASCII tersebut pada website "Base64Decode".

None

Bisa diketahui bahwa file tersebut aslinya adalah file berbentuk gambar dengan ekstensi. Karena data hexbytes dari file tersebut sangat acak, sangat memakan waktu untuk mengubah satu persatu agar file tersebut kembali berbentuk gambar. Kita bisa memanfaatkan perintah strings, tr dan base64 secara bersamaan untuk mengambil semua teks ASCII dari file tersebut, menghapus jarak newline (baris baru) teks tersebut dan men-decode teks tersebut dengan base64, lalu menyimpannya menjadi file baru berbentuk gambar.

┌──(root㉿kali)-[/home/kali]
└─# strings logs.txt | tr -d '\n' | base64 -d > image.png

Setelah berhasil, kita bisa buka file gambar tersebut dengan tools pembuka gambar.

None

Di dalam gambar tersebut kita bisa melihat bahwa terdapat hash dengan format alfa-numerik panjang. Kita bisa saja menulis huruf per huruf dan angka per angka, tetapi besar kemungkinan akan terjadi kesalahan ketikan atau ada karakter yang terlewat, karena itu kita bisa memanfaatkan sebuah tools dengan nama 'tesseract-ocr'. Tesseract-ocr sendiri adalah sebuah tools yang bisa membaca dan mengubah sebuah gambar yang berisi tulisan menjadi sebuah teks tulisan.

Jika belum punya tools tesseract tersebut, bisa diinstal terlebih dahulu dengan perintah 'apt install tesseract-ocr'.

┌──(root㉿kali)-[/home/kali]
└─# apt install tesseract-ocr
Installing:
  tesseract-ocr

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 416 kB
  Space needed: 2,263 kB / 54.9 GB available

Get:1 http://http.kali.org/kali kali-rolling/main amd64 tesseract-ocr amd64 5.5.0-1+b3 [416 kB]
Fetched 416 kB in 1s (333 kB/s)
Selecting previously unselected package tesseract-ocr.
(Reading database… 466621 files and directories currently installed.)
Preparing to unpack …/tesseract-ocr_5.5.0-1+b3_amd64.deb…
Unpacking tesseract-ocr (5.5.0-1+b3)…
Setting up tesseract-ocr (5.5.0-1+b3)…
Processing triggers for man-db (2.13.1-1)…
Processing triggers for kali-menu (2026.1.4)…

Setelah selesai, kita bisa langsung menggunakannya dengan perintah tesseract.

┌──(root㉿kali)-[/home/kali]
└─# tesseract image.png flag
Estimating resolution as 208

Teks panjang tersebut adalah sebuah hash dengan basis hex. Kita bisa decode teks tersebut dengan reverse hex dan memanfaatkan perintah dari cat untuk menampilkan isi dari file "flag.txt" dan diteruskan perintah pipeline xxd dengan parameter '-r' (reverse encode) dan '-p' (plain text).

┌──(root㉿kali)-[/home/kali]
└─# cat flag.txt | xxd -r -p
picoCTF{forensics_analysis_is_amazing_5ccc7cb0}                                                                    

Kita telah berhasil menemukan "Flag" yang bisa kita masukkan ke dalam forum.

CONCLUSION: Seseorang telah memberikan sebuah file "logs.txt" ke dalam sistem yang berisi string teks acak dan panjang yang telah di-encode dengan 2 macam, yaitu mengubah format data dengan hex lalu di-encode lagi dengan base64 untuk menyembunyikan file data di dalamnya agar sulit untuk dibaca.

PENUTUP: Sekian pemaparan saya tentang challenge "Flag in Flame" dari forum PicoCTF. Terimakasih sudah membaca tulisan dari saya, sampai berjumpa di lain waktu. ADIOS.