Reverse Engineering
Ular Terbungkus
Diberikan file dengan ekstensi file python yang sudah di compile (.pyc) dan ketika di run maka akan menampilkan :
----- Sarang Ular -----
Flag :
|
untuk menyelesaikan challenge ini, penulis terlebih dahulu mendecompyle dengan bantuan Uncompyle6, dan saat di run akan tampil :
┌─[fallcrescent@parrot]─[~/Hackfest/Crypto/Multibyte_XOR_Source]
└──╼ $ uncompyle6 ular_terbungkus.pyc
# uncompyle6 version 3.2.4
# Python bytecode 2.7 (62211)
# Decompiled from: Python 2.7.15+ (default, Nov 28 2018, 16:27:22)
# [GCC 8.2.0]
# Embedded file name: ular_terbungkus.py
# Compiled at: 2018-12-12 08:33:32
from Crypto.Cipher import AES
import hashlib, base64
class Ular:
def __init__(self):
self.ular_flag = 'Gda+wKa52rT/1WaWzVXDVi23VemIwUNTpttG4JJddYGHDF4eSGj2/9tCZs8OTwzaizI75GTfxS/QGDKEVm9XBz2zM/WQGrM7gqDNfx3SCpVKtaENNnnYOZHwk8Lpo1wt'
def unpad(self, s):
return s[:-ord(s[-1])]
def decrypt(self, s):
cip = base64.b64decode(s)
key = hashlib.md5(cip[:16]).hexdigest()
IV = cip[-16:]
cipher = cip[16:-16]
aes_obj = AES.new(key, AES.MODE_CBC, IV)
return self.unpad(aes_obj.decrypt(cipher))
def get_flag(self):
return self.decrypt(self.ular_flag)
def main():
print '----- Sarang Ular -----'
inp_flag = raw_input('Flag : ')
real_flag = Ular().get_flag()
if inp_flag == real_flag:
print '[+] Correct'
else:
print '[x] Wrong'
if __name__ == '__main__':
main()
# okay decompiling ular_terbungkus.pyc
|
dari script diatas penulis hanya membenarkan penulisan script dengan menghapous bagian if dan input lalu menampilkan fungsi real_flag
def main():
print '----- Sarang Ular -----'
real_flag = Ular().get_flag()
print(real_flag)
|
Flag : HackFest{88df7b7657844da585f1590c887bbaefdb2685c6}
Serial Number
diberikan service netcat dengan alamat nc ccug.gunadarma.ac.id 6006 dan jika di run maka akan menampilkan :
HackFest 0x02 Secret Software
[?] Serial number :
|
dan juga diberikan sebuah file exe yang sudah, lalu penulis membukanya dengan IDA Pro dan mendapatkan :
Dan dapat di lihat bahwa service menerima angka dengan format %d-%d-%d-%d-%d dan akan dimasukkan fungsi sub_AC0 dan ketika dibuka fungsinya tertulis
Untuk menyelesaikan challenge ini penulis menggunakan perhitungan manual dikarenakan pada saat mengerjakan tidak mengetahui ada z3 tools yang dapat membantu solve perhitungan ini. Dengan membandingkan nilai dengan ketentuan if agar tidak return 0 Maka didapatkan
a1 = 2000
a2 = 2000
a3 = 4000
a4 = 8000
a5 = 4000
dan ketika dimasukan ke service
HackFest 0x02 Secret Software
[?] Serial number : 2000-2000-4000-8000-4000
Nice bro
HackFest{z3_akan_setia_menemanimu_di_masa_masa_sulit_seperti_ini}
|
Flag : HackFest{z3_akan_setia_menemanimu_di_masa_masa_sulit_seperti_ini}
0 comments:
Post a Comment