ACSC CTF 2021
2021, Sep 17
Asian Cyber Security Challenge
RSA Stream
Sau khi down fle giải nén về, ta giải nén 2 lần (file .gz và file tar.gz) ta được các file như sau:
-
mở file chal.py:
-
Dễ thấy, đây là 1 bài toán RSA, nhưng cipher được viết ra bằng mỗi lần cắt 256 byte từ chính file chal.py chuyển về long và xor với stream = pow(m, e, n). Cứ mỗi lần như vậy thì e sẽ thay đổi thành e = next_prime(e), sau đó cipher lưu vào file chal.enc
Solve:
- Việc đầu tiên cần làm là lấy lại các stream, với c là 256 byte mình cắt lần lượt từ file chal.enc, q là mình cắt từ file chal.py, sau đó xor lại là sẽ được các stream
-
Vì cơ bản mình chỉ cần 2 stream thì có thể attack để lấy m, tham khảo ở đây link
-
Sau khi có được m với kiểu dữ liệu long, mình long_to_bytes(m) là ra flag:
=> FLAG: ACSC{changing_e_is_too_bad_idea_1119332842ed9c60c9917165c57dbd7072b016d5b683b67aba6a648456db189c}