pay me 2 win
Published on July 13, 2025
Pay me 2 win
Buka link yang tersedia, dan ditemukan potongan source code (index.php) berikut
Terdapat hint yang diberikan di bagian komentar, mengikuti petunjuk pada komentar, kita mengunjungi alamat berikut: http://ctf.asgama.online:40003/?is_debug=1 Setelah dibuka lalu di scroll ke bawah, ditemukan potongan suatu source code PHP berikut:
Dari potongan kode di atas, kita bisa menyimpulkan:
- Input money dikirim melalui metode POST.
- Nilai money harus merupakan digit numerik (ctype_digit).
- Kemudian, nilai tersebut dijumlahkan dengan 0x1337 (atau 4919 dalam desimal), dan dibandingkan apakah hasilnya === 0.
- Jika kondisi ini terpenuhi, maka flag akan ditampilkan.
Namun, karena ctype_digit() hanya menerima angka positif tanpa tanda minus, kita tidak bisa langsung mengirim nilai -0x1337 untuk membuat hasil akhir menjadi nol. Solusi untuk ini adalah mengirim nilai overflow yang jika ditambahkan dengan 0x1337 menghasilkan nol saat dikonversi ke tipe int. Untuk mengakali pengecekan ctype_digit, kita manfaatkan integer overflow. Nilai money yang kita kirim adalah: 18446744073709546697 Nilai ini merupakan hasil dari:
Ketika nilai ini dikonversi ke int dalam konteks 64-bit integer overflow, hasil akhirnya adalah -0x1337, sehingga:
(int)($money+0x1337)===0Kemudian, untuk memudahkan proses exploitasi, kita menggunakan burpsuite untuk mengubah request value.