redirection

Published on July 13, 2025

image

Kita diberikan link untuk connect ke server: Kita juga diberikan sebuah file binary (redirection) yang merupakan source code dari chall ini. Kemudian, kita membuka program tersebut menggunakan IDA untuk melakukan proses dekompilasi dan analisis alur program.

image image

Penjelasan file:

  • Fungsi main() memanggil vulnerable() dengan parameter: image

  • Fungsi vulnerable() melakukan hal-hal berikut

  • Membaca file flag.txt

  • Menyimpan isinya ke dalam buffer flag yang ada di .bss

  • Meminta input user dengan scanf(“%s”, v1) di buffer berukuran 32 byte

  • Buffer v1 dialokasikan di stack sebesar 32 byte → rawan buffer overflow

  • Binary tidak menggunakan PIE, jadi alamat flag bisa diprediksi

Dengan informasi ini, kita tahu bahwa kita bisa melakukan buffer overflow untuk menimpa return address dan menjalankan ROP chain agar memanggil puts(flag) dan mencetak flag ke layar.

image

Penjelasan Program:

  • Kita menggunakan pwntools untuk meng-handle koneksi dan pengiriman payload.
  • Payload dibuat dengan overflow sebanyak 40 byte (b”A”*40) untuk mencapai return address.
  • pop rdi; ret digunakan untuk mengatur argumen pertama fungsi puts(), yaitu alamat buffer flag.
  • Lalu kita panggil puts@plt dengan argumen flag.
  • Tambahan ret (0x40101a) digunakan untuk stack alignment jika dibutuhkan oleh sistem tertentu (misal glibc modern).

Dengan menggunakan teknik buffer overflow dan ROP sederhana ini, kita berhasil mendapatkan flag dari binary yang diberikan.

Flag: LK25{flow_redirection_is_similar_to_ret2win}
```