[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()     […]

[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 […]

[PicoCTF 2022] – Sequences

Description

Solution diberikan sebuah file sequences.py seperti berikut: Analisis Kode Inti dari kode di atas adalah fungsi decrypt_flag akan menerima variabel sol, yang nantinya akan diverifikasi apakah nilai dari sol tersebut benar atau tidak dengan membandingkan hashnya dengan “VERIF_KEY”, yang apabila benar maka variabel tersebut akan digunakan untuk memproduksi key pemecah encryptionnya. Nilai dari […]

[TMUCTF 2021] – 435!

challenge.py Summary: Sebuah plaintext terdiri dari kalimat “CBC (Cipher Blocker Chaining) is an advanced form of block cipher encryption” disambung dengan 10 byte pertama hasil hash SHA256 dari KEY. Plaintext tersebut diencrypt dengan algoritma AES metode CBC (Cipher Block Chaining). Kita diberikan sebagian plaintext (sebagian lagi merupakan hasil hash dari KEY), serta KEY dan ciphertext […]