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 […]
Category: Crypto
[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
1 2 3 |
I wrote this linear recurrence function, can you figure out how to make it run fast enough and get the flag? Download the code here sequences.py Note that even an efficient solution might take several seconds to run. If your solution is taking several minutes, then you may need to reconsider your approach. Hint #1 : Google "matrix diagonalization". Can you figure out how to apply it to this function? |
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 […]
[HackToday 2021] – Polyday
polyday.txt: (94*x^40 + 230*x^39 + 103*x^38 + 187*x^37 + 76*x^36 + 11*x^35 + 93*x^34 + 152*x^33 + 91*x^32 + 153*x^31 + 180*x^30 + 18*x^29 + 195*x^28 + 47*x^27 + 95*x^26 + 216*x^25 + 84*x^24 + 18*x^23 + 232*x^22 + 53*x^21 + 174*x^20 + 7*x^19 + 110*x^18 + 155*x^17 + 237*x^16 + 20*x^15 + 215*x^14 + […]
[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 […]