Pada soal ini, kami diberikan sebuah file pyc maka langsung saja kita gunakan tools decompiler bytecode yaitu Uncompyle6. Hasilnya adalah sebagai berikut: Jika diperhatikan, kodingan tersebut memvalidasi username dengan cara membandingkan indexnya yang harus memenuhi persyaratan tertentu, sedangkan untuk password adalah S3cr3t_Pas5 yang urutannya diacak menggunakan random.shuffle dengan seed time.time(). Untuk menyelesaikan username kita bisa […]
[ARACTF Qual 2022] – OWL 2077
Diberikan sebuah file .exe bernama OWL_2077 yang ketika dijalankan, ternyata adalah sebuah permainan game dimana kita berperan sebagai burung hantu yang nampaknya kita harus menang dalam setiap level untuk mendapat satu per satu karakter flag sampai ke level tertinggi. Pada folder, icon dari program tersebut adalah icon python exe Dan ketika distrings, terlihat juga kata-kata […]
[ARACTF Qual 2022] – Numbers
Chall.py from Crypto.Util.number import bytes_to_longfrom flag import FLAG f1, f2, f3, f4 = [bytes_to_long(FLAG[i:i+8]) for i in range(0, len(FLAG), 8)] print(f'{f1**3 – f2**3 + f3 – f4 = }’)print(f'{-f1**3 * f2**3 + f1**3 * f3 – f2**3 * f3 – f1**3 * f4 + f2**3 * f4 – f3 * f4 = }’)print(f'{-f1**3 * f2**3 […]
[OSCCTF Qual 2022] – Flip
Untuk soal ini, kami menggunakan referensi dari ctf luar https://r00tstici.unisalento.it/davincictf-2021-writeups/. Seperti pada writeup soal sebelumnya https://petircysec.com/oscctf-qual-2022-book/ , nampaknya soal ini juga menggunakan konsep oracle padding attack namun bedanya di soal ini terdapat !P[input | flag] dan P[input | flag]. Seperti pada referensi, yang memiliki ! dianggap sebagai hasil enkripsi yang salah sehingga kita fokus saja […]
[OSCCTF Qual 2022] – Book
Pada soal ini, kita diminta untuk memasukkan inputan nama dan program akan mengeluarkan hasil enkripsinya dengan model plaintextnya. Coba kami masukkan nama yang berbeda. Bisa dilihat jika panjang input nya sama, maka hasil enkripsi block setengah ke belakang juga sama. Berarti kemungkinan besar algoritma yang digunakan AES ECB (ditandai juga dengan judul ‘book’). Jika bagian […]
[OSCCTF Final 2022] – Admin?
app.py #!/usr/bin/env python3from Crypto.Util.Padding import pad, unpadfrom Crypto.Cipher import AESfrom Crypto.Random import get_random_bytes import binasciifrom flag import FLAG BLOCKSIZE = 16 def generate_body(key: bytes) -> dict: “”” Generate encrypted body to give to user “”” pt = ‘u=user’ iv = get_random_bytes(16) cipher = AES.new(key, AES.MODE_CBC, iv = iv) ct_hex = cipher.encrypt(pad(pt.encode(), block_size=BLOCKSIZE)).hex() […]
[OSCCTF Final 2022] – Need Codes
Diberikan sebuah file PE32 Windows Executable yang meminta beberapa inputan code, yang jika benar semua maka flag akan diberikan. Langsung saja kita buka IDA32 dan mendecompilenya. Mainnya ada pada sub_401460. signed int sub_401460(){ unsigned int index; // eax unsigned int index_1; // eax signed int result; // eax int inputan; // [esp+3Ch] [ebp-50h] int arrayinput[7]; […]
[Hacktoday Qual 2022] – Pushin P
Diberikan sebuah kodingan enkripsi rsa seperti berikut: from Crypto.Util.number import * def push_p(p): p += 0xD1CC if not p % 0x2: p += 0x1 while not isPrime(p): p += 0x2 return p def get_factors(nbit): p = getPrime(nbit) q = push_p(pow(push_p(p), 0x2)) return (p, q) def get_modulus(f=()): n = 0x1 for i […]
[Hacktoday Qual 2022] – Looks Easy
attachment: chall.py from Crypto.Util.number import * def Fn(e): return 2**(2**e) +1 def txt(txt): with open (txt,”rb”) as f: m = f.read().strip() m = bytes_to_long(m) p,q,r = getPrime(0x400), getPrime(0x400),getPrime(0x400) f.close() return m,p,q,r def abc(a,b,c): x,y,z = (a+b), (b+c), (a+c) return x,y,z def stu(s,t,u): v,w,x = s*t, […]
[Hacktoday Final 2022] – Crash the Hash
attachment: chall.py #!/usr/bin/python3from hashlib import md5from string import ascii_uppercase as ALLCHARfrom random import seed, choicesfrom time import timefrom math import floor seed(floor(time()))SECRET = “”.join(choices(ALLCHAR, k=4)).encode()FLAG = open(“flag.txt”, “r”).read() def show_menu(): print( “””Select menu:[1] Play.[2] Get secret.[3] Exit””” ) def get_digest(msg): return md5(msg).hexdigest() def get_secret(): return get_digest(SECRET) def ask_string(n): print(f”Please enter string {n}”) string […]