Flag Command | HackTheBox CTF Challenge Write-Up
Step 1: Exploring Developer Tools, Bro!
Pertama-tama, buka Developer Tools di browser:
- Tekan
F12
atauCtrl + Shift + I
(Windows) atauCmd + Option + I
(macOS). - Langsung masuk ke tab Network untuk memantau request yang terjadi.
Pas game dimulai, pilih perintah dan perhatikan request yang dikirim ke server. Inilah kesempatan untuk mengungkap bagaimana aplikasi ini bekerja di balik layar.
Step 2: Spotting the Sneaky API Endpoint
Di tab Network, ada satu endpoint yang menarik perhatian: /api/options
. Endpoint ini mengirimkan data dalam format JSON yang berisi daftar perintah yang bisa dipilih:
{
"allPossibleCommands": {
"1": ["HEAD NORTH", "HEAD WEST", "HEAD EAST", "HEAD SOUTH"],
"2": ["GO DEEPER INTO THE FOREST", "FOLLOW A MYSTERIOUS PATH", "CLIMB A TREE", "TURN BACK"],
"3": ["EXPLORE A CAVE", "CROSS A RICKETY BRIDGE", "FOLLOW A GLOWING BUTTERFLY", "SET UP CAMP"],
"4": ["ENTER A MAGICAL PORTAL", "SWIM ACROSS A MYSTERIOUS LAKE", "FOLLOW A SINGING SQUIRREL", "BUILD A RAFT AND SAIL DOWNSTREAM"],
"secret": ["Blip-blop, in a pickle with a hiccup! Shmiggity-shmack"]
}
}
Di bagian secret
, ada perintah yang terpisah dari yang lain. Ini adalah petunjuk utama untuk melangkah lebih jauh dan membuka rahasia permainan.
Step 3: Breaking Security with Secrets
Di balik permainan ini, ada sistem yang memverifikasi perintah yang dimasukkan. Berikut cara kerjanya:
if (availableOptions[currentStep].includes(currentCommand) || availableOptions['secret'].includes(currentCommand)) {
await fetch('/api/monitor', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ 'command': currentCommand })
})
.then((res) => res.json())
.then((data) => {
if (data.message.includes('HTB{')) {
playerWon();
}
});
}
Inilah momen penting. Masukkan Blip-blop, in a pickle with a hiccup! Shmiggity-shmack
, dan server akan memberikan flag karena perintah ini ada dalam daftar secret
.
Step 4: Send the Secret Command and Unlock the Win! 🏁
Sekarang waktunya untuk mengirim command rahasia ini ke endpoint /api/monitor
. Gunakan browser atau Postman, atau coba curl untuk mengirim permintaan:
curl -X POST https://htb.com/api/monitor \\
-H 'Content-Type: application/json' \\
-d '{"command": "Blip-blop, in a pickle with a hiccup! Shmiggity-shmack"}'
Step 5: Check the Response and Reveal the Hidden Flag!
Jika berhasil, server akan merespons dengan pesan yang berisi flag:
{
"message": "HTB{your_flag_here}"
}
Conclusion 🎉
With analisis yang tepat dan perhatian lebih, flag yang tersembunyi akhirnya ketemu. Langkah-langkah ini nunjukin gimana caranya ngulik aplikasi web dan ngecek keamanan API. Jangan berhenti di sini, challenge selanjutnya siap ditaklukkan!