Pada challenge kali ini, kita mendapatkan sebuah binary file yang berfungsi untuk check flag. Mari kita menggunakan IDA Pro untuk decompile file ini.

Ini adalah hasil decompile pada main function. Jadi saya jelaskan sekilas tentang cara kerja dari file ini :
- Menerima input argument dengan format CTFlearn{flag}
- Problem setter membuat fake flag, apabila kita submit maka file akan return “You found the false flag”

Ternyata ada fungsi else yang berfungsi untuk XOR flag dengan key yang ada. Beruntung kali ini flag yang terXOR tersedia dalam binary filenya (hex format), berikut data yang bisa kita ambil.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
from binascii import a2b_hex, unhexlify #XOR-ed Flag one = unhexlify("C5D9CACEC7EDFFE8") two = unhexlify("DD9BE7F4CED2EED0") three = unhexlify("C5CAC7CEC8E2F4CE") four = "\xCF\xF4\xD6" #XOR key xorKey1 = "\xAB\xAB\xAB\xAB\xAB\xAB\xAB\xAB" xorKey2 = "\xAB\xAB\xAB" #Store part 1-4 flag temp1 = "" temp2 = "" temp3 = "" temp4 = "" #XOR functions for x in range(len(one)): temp1 += chr((one[x])^ord(xorKey1[x])) # one XOR xorkey1 .. and so on temp2 += chr((two[x])^ord(xorKey1[x])) temp3 += chr((three[x])^ord(xorKey1[x])) for y in range(len(four)): temp4 += chr(ord(four[y])^ord(xorKey2[y])) print(temp1) print(temp2) print(temp3) print(temp4) flag = temp4+temp3+temp2+temp1 print(flag[::-1]) #Reverse Print Flag |
Flag : CTFlearn{Eye_L0ve_Iceland_}