CTF, Web Application

CTF PHP Juggling

Setelah mencoba berbagai metode dalam CTF ini, akhirnya saya berhasil menaklukkan tantangan “Juggling”! Tantangan ini menguji pemahaman tentang bagaimana PHP menangani perbandingan variabel dengan tipe data yang berbeda.

saya melakukan view-source dan mendapatkan source code dibawah ini

Dari kode ini, tantangannya adalah menemukan nilai $flag yang saat dibandingkan dengan hasil md5($flag) menggunakan operator == akan mengembalikan true

Di PHP, operator == melakukan loose comparison atau perbandingan longgar, yang berarti dua nilai yang berbeda bisa dianggap sama jika PHP dapat mengonversinya ke tipe data yang cocok.

Eksploitasi Type Juggling

Eksploitasi ini menunjukkan kelemahan dari penggunaan perbandingan longgar (==) dalam PHP, terutama saat menangani hash. Karena PHP mengubah string berbentuk 0e... menjadi angka nol, ini memungkinkan kita mengecoh sistem untuk menerima input yang salah sebagai benar.

Jika kita cek md5 dari “0e1137126905”, hasilnya adalah:

php
md5("0e1137126905") = "0e291642016894666067290367632591"

Perhatikan bahwa hasil hash juga berbentuk notasi ilmiah (0e...).

Saat perbandingan berikut dilakukan:

php
if ("0e1137126905" == "0e291642016894666067290367632591")

PHP akan menafsirkan keduanya sebagai angka nol (0), sehingga kondisi menjadi true!

maka output yang dihasilkan ketika kita menambahkan parameter?flag=0e1137126905 adalah sebagai berikut:

Nah…. It’s your day flag{fake}

Rekomendasi

Eksploitasi ini membuktikan bahwa penggunaan perbandingan longgar (==) dalam PHP bisa sangat berbahaya. Untuk mencegah serangan ini, developer harus:

  1. Menggunakan perbandingan ketat (===) agar PHP tidak mengonversi tipe data secara otomatis.
  2. Memastikan input sudah divalidasi dengan baik sebelum dibandingkan dengan hash.

Dengan memanfaatkan Type Juggling di PHP, kita bisa melewati validasi dan mendapatkan flag. Ini adalah contoh eksploitasi yang menarik sekaligus peringatan bagi para developer PHP untuk lebih berhati-hati dalam menangani perbandingan data.

Tagged , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *