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

CSAW 2017 Write up

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

WhiteHat Challenge 04 Write up ( Misc + 2Cryp + For )