ASIS Final - Simple crypto Write up

Đề:
Begining always needs an interesting challenge, we can assure you, this challenge is an interesting one to begin the CTF!



Ta nhận được 1 file flag.enc và 1 file simple.py
Sau 1 hồi quan sát ta thấy rằng mã hóa này có điểm yếu ở dòng 

enc = xor_str(key * (len(flag) // len(key) + 1), flag).encode('hex')


Ta có thể phục lại được flag bằng cách check length() của file flag.enc là 25280
đặt phần ( len(flag) // len(key) + 1 ) = x

lúc này mã hóa sẽ thành

enc = x_str(key*x,flag).encode('hex')

-> ta có thể biết được độ dài của x vì function xor_str có điểm yếu là

if len(x) > len(y):
        return ''.join([chr(ord(z) ^ ord(p)) for (z, p) in zip(x[:len(y)], y)])
    else:

        return ''.join([chr(ord(z) ^ ord(p)) for (z, p) in zip(x, y[:len(x)])])

Dễ dàng thấy độ dài của file = độ dài của file mã hóa / len( key.encode('hex') = 25280 / 40 = 632 
ta đã có x
lúc này phục hồi bằng cách 

flag = xor_str( key*x , flag.enc )
ta tìm được 1 file ảnh là flag
đây là Script mình viết để làm bài



Nhận xét

Bài đăng phổ biến từ blog này

SHACTF 2017 Write up for MISC Junior (200)

SECT CTF - ACID BURN ft REPORT Misc 200 & 200 Write up

Write up - SHACTF 2017 ( 2For100 + Cryp100 + Network100 + Crypt200)