Cryptography | aupCTF 2023
Challenge Name: Rotation
We’ve employed a unique technique to encode the message, one that goes beyond the traditional limits of the Caesar cipher. Keep your wits about you and explore every possible avenue — the answer may be closer than you think
0*%pgs8.K*H5K*#3H"N:
Use the following combination to get to the first step then:
Flag: aupCTF{y0u-f0und-m3}
Challenge Name: Ancient Cipher
Meet Bob, the world’s worst cryptographer. His encryption skills are so bad that his messages are basically gibberish. One time, he tried to send a secret message to his friend Alice, but it was so poorly encrypted that his dog was able to decode it. Needless to say, Bob’s not winning any cryptography awards anytime soon.
rlgTKW{S0s'j_Sru_Tipgk0xirgyp_5b1ccj}
Use cyberchef with following to get the flag:
Flag: aupCTF{B0b’s_Bad_Crypt0graphy_5k1lls}
Challenge Name: Enigma
I found an old enigma machine and was messing around with it. can you decipher it
MACHINE TYPE: kriegsmarine 3 rotors
REFLECTOR: B
ROTORS: I, II, III
INITIAL POSITIONS OF THE ROTORS: X, Y, Z
POSITION OF THE ALPHABET WHEEL: A, B, C
PLUGBOARD: AT BS DE FM IR KN LZ OW PV XY
CIPHER: LXFUZLVHEJLEWZRIXIS
remember to put the flag in format: aupCTF{answer}
answer in UPPERCASE
flag: aupCTF{ENIGMAISFASCINATING}
Challenge Name: Disorder
utsa}Ts0aXa{1_eC1ngXph__XF_tmX
By using Transpositional Cipher we get the flag:
flag: aupCTF{th1s_1s_n0t_a_game}
Challenge Name: Swiss Army Knife
I converted the given to binary by replacing X with 0 and Y with 1
01001100 01010011 00110000 01110100 01001001 01000011 00110100 01110100 01001100 01101001 01000001 01110100 01001100 01101001 00110100 01110100 01001001 01000011 00110000 01110100 01001100 01101001 01000001 01110101 01001100 01101001 00110100 01100111 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110101 01001100 01101001 00110100 01100111 01001100 01010011 00110100 01100111 01001100 01101001 00110000 01110101 01001100 01101001 01000001 01110101 01001100 01101001 00110000 01110101 01001001 01000011 00110100 01110101 01001100 01101001 00110100 01110101 01001001 01000011 00110100 01110100 01001100 01010011 01000001 01110100 01001100 01010011 01000001 01110101 01001100 01101001 00110100 01110100 01001100 01010011 01000001 01110101 01001100 01010011 00110100 01100111 01001100 01101001 00110000 01110101 01001001 01000011 00110000 01110101 01001001 01000011 00110100 01110101 01001100 01101001 00110000 01100111 01001100 01101001 00110000 01110101 01001001 01000011 00110000 01110100 01001100 01101001 01000001 01110101 01001100 01101001 00110100 01100111 01001100 01010011 00110000 01100111 01001100 01101001 00110000 01110100 01001100 01010011 01000001 01110100 01001001 01000011 00110100 01110101 01001100 01010011 00110100 01100111 01001100 01101001 00110100 01110100 01001001 01000011 00110000 01110100 01001100 01101001 00110100 01100111 01001100 01101001 00110000 01110100 01001001 01000011 00110000 01110100 01001100 01010011 01000001 01110101 01001100 01101001 00110100 01110101 01001100 01101001 01000001 01110101 01001100 01010011 00110100 01100111 01001100 01010011 00110000 01110101 01001100 01010011 01000001 01110100 01001100 01010011 00110000 01100111 01001100 01101001 00110100 01110101 01001100 01101001 00110000 01100111 01001100 01010011 00110100 01110100 01001100 01010011 01000001 01110101 01001100 01010011 00110000 01100111 01001100 01010011 00110000 01110100 01001001 01000011 00110000 01110101 01001100 01101001 00110100 01110101 01001001 01000011 00110100 01110100 01001100 01101001 01000001 01110101 01001100 01101001 00110100 01110100 01001001 01000011 00110100 01110101 01001100 01010011 00110100 01100111 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110100 01001001 01000011 00110000 01110101 01001100 01101001 01000001 01110100 01001100 01101001 00110000 01100111 01001100 01010011 00110000 01100111 01001100 01101001 00110100 01110101 01001100 01010011 00110000 01100111 01001100 01010011 00110100 01110101 01001100 01010011 01000001 01110101 01001100 01010011 00110000 01110101 01001001 01000011 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110101 01001100 01010011 01000001 01110100 01001100 01101001 00110100 01110101 01001100 01010001 00111101 00111101
Now binary to text
Now Base64
Now Morse to text
Now to Base32
Finally we get the flag
flag: aupCTF{mu1tip13–3nc0d1ng5-u53d}
Challenge Name: Battista’s Bet
My friend is a big fan of the famous Italian cryptographer Giovan Battista Bellaso, he has challenged me to crack this ciphertext. I have been struggling to decode it, Can you help me out
syrTXY{T3pnr50A0ndhD3Gv0nv}
FLAG: aupCTF{B3lla50W0uldB3Pr0ud}
Challenge Name: RSA
Just remember, the key to success is staying calm, cool, and collected. Oh, and maybe a little bit of math.
I made this script to get the flag:
from Crypto.Util.number import long_to_bytes, inverse
# Given values
n = 114451512782061350994183549689132403225242966062482357218929786202609314635625168402975465116960672539381904935689924074978793017604108838426275397024126351435336388859375577638687615733448645699186377194544704879027804400841223407182597828299190404980916587708863068950664207317360099871904794302327240026597
e = 0x10001
c = 77973874950946982309998238055233832655056168217930252243355819182449120246116674359138553216317477143768434108918799869104308920311195408379262816485377057853246446992573203590942762693635615621774057306679349618708293741847308966437868706668452083656318895155238523224237514077565164105837790895618179891869
# Step 1: Factorize the modulus n into p and q
p_plus_q = 21400959789031198835597502268226110838410793429486235013163818172148759394109297013195530163943463063090162742198192075506990494863858727035693527345539878
p_minus_q = 441620610348849769847261104024471204541391170160225757260110727514761526074769013762749528928112909396341014808517549368576708910310103233373547986477636
# Calculate p and q
p = (p_plus_q + p_minus_q) // 2
q = (p_plus_q - p_minus_q) // 2
# Step 2: Calculate the private key d
phi = (p - 1) * (q - 1)
d = inverse(e, phi)
# Step 3: Decrypt the ciphertext
m = pow(c, d, n)
# Step 4: Convert the decrypted message back to bytes
flag = long_to_bytes(m)
print("Decrypted flag:", flag.decode())
flag: aupCTF{3a5y_tw0_3quat10n5_and_hax3d_3}
Crypto pwned hehe
If you like the writeup do give a follow.