[RE] Dsp - POC CTF 2025

2025. 10. 13. 02:00·

Đề bài


Tóm tắt

Ta được cung cấp file disassembly chall.dis. Mã bytecode Python xây dựng một bảng CRC32, định nghĩa hàm zzz42(string) => int để tính CRC32 kiểu chuẩn (init 0xFFFFFFFF, bảng đa thức 0xEDB88320, dịch phải 8 bit mỗi vòng, cuối cùng đảo bit), rồi yêu cầu người chơi nhập 6 chuỗi sao cho giá trị CRC32 của từng chuỗi khớp với 6 số trong danh sách expected. Nếu cả 6 chuỗi đều khớp, chương trình in ra cờ


Phân tích bytecode

  • Đa thức CRC: poly = 0xEDB88320 (3988292384)
  • Sinh bảng 256 phần tử từ poly (vòng lặp 8 bit/byte)
  • Hàm zzz42(string):
    • value = 0xFFFFFFFF (khởi tạo)
    • Với từng ký tự ch: value = (value >> 8) ^ table[(ord(ch) ^ value) & 0xFF]
    • Trả về -1 - value → tức bitwise NOT của value, tương đương zlib.crc32(s) & 0xFFFFFFFF
  • Danh sách cần khớp (expected) có 6 giá trị CRC32 (dạng unsigned 32-bit)

Danh sách CRC32 mục tiêu

Thứ tự CRC32 (hex) CRC32 (dec)
1 0x9581D07D 2508312701
2 0x49629A97 1231198871
3 0x57D65259 1473663577
4 0x3CEAE297 1022026391
5 0xFEEE8227 4277043751
6 0x6464C2B0 1684325040

Tìm tiền ảnh (preimage)

Chiến lược:

  1. Brute force ngắn cho độ dài 1–2 ký tự ASCII để lọc ra trường hợp đặc biệt
  2. Dò từ điển/ đoán cụm từ tự nhiên từ hint đề bài (“Free flag for everyone.”) → rất phù hợp với cụm “how easy peasy is this ?”
  3. Kiểm tra CRC32 của từng từ khóa dự đoán bằng zlib.crc32 và so sánh với expected

Kết quả khớp 1–2 ký tự

  • Ký tự '?' có CRC32 0x6464C2B0 → khớp mục tiêu #6
  • Chuỗi 'is' có CRC32 0x3CEAE297 → khớp mục tiêu #4

Kiểm tra các từ dự đoán

  • 'how' → 0x9581D07D → khớp mục tiêu #1
  • 'easy' → 0x49629A97 → khớp mục tiêu #2
  • 'peasy' → 0x57D65259 → khớp mục tiêu #3
  • 'this' → 0xFEEE8227 → khớp mục tiêu #5
  • '?' → 0x6464C2B0 → khớp mục tiêu #6
Lưu ý quan trọng: Ký tự cuối cùng thật sự là dấu hỏi ? (không phải placeholder). Điều này được chứng minh trực tiếp bằng CRC32: zlib.crc32(b'?') & 0xFFFFFFFF == 0x6464C2B0

Mapping cuối cùng

Vị trí Chuỗi CRC32 (hex)
1 how 0x9581D07D
2 easy 0x49629A97
3 peasy 0x57D65259
4 is 0x3CEAE297
5 this 0xFEEE8227
6 ? 0x6464C2B0

Flag

Flag: FlagY{how_easy_peasy_is_this_?}

'WriteUp > RE' 카테고리의 다른 글

Square Cipher - BuckeyeCTF 2025  (0) 2025.11.09
Python 0bf  (0) 2025.11.02
[RE] Clockwork - EnigmaXplore 3.0  (0) 2025.10.20
[RE] S0urc3 - POC CTF 2025  (0) 2025.10.13
[RE] Mystery Zone  (0) 2025.09.01
'WriteUp/RE' Other posts in category
  • Python 0bf
  • [RE] Clockwork - EnigmaXplore 3.0
  • [RE] S0urc3 - POC CTF 2025
  • [RE] Mystery Zone
longhd
longhd
Longhd's Blog
  • longhd
    Ha Duy Long - InfosecPTIT
    longhd
  • Total
    Today
    Yesterday
  • About me

    • Hello I'm Duy Long 👋🏻
    • View all categories (117) N
      • Certificates (4)
      • CTF (3)
      • WriteUp (94) N
        • Forensics (44) N
        • Steganography (5)
        • RE (9) N
        • OSINT (8)
        • Web (17)
        • MISC (6)
        • Crypto (3)
        • Pwn (2)
      • Love Story (0)
      • Labs (15)
        • Information Gathering (10)
        • Vulnerability Scanning (2)
        • Introduction to Web Applica.. (1)
        • Common Web Application Atta.. (1)
        • SQL Injection Attacks (1)
  • Blog Menu

    • Home
    • Tag
    • GuestBook
  • Popular Posts

  • Tags

    Web
    SunshineCTF2025
    Dreamhack
    Steganography
    htb
    picoCTF
    writeup
    Forensics
    PTITCTF2025
    CSCV2025
    V1tCTF2025
    EnigmaXplore3.0
    OSINT
    Re
    CHH
    THM
    misc
    CTF
    BuckeyeCTF2025
    POCCTF2025
  • Recent Comments

  • Recent Posts

  • hELLO· Designed ByLong.v4.10.4
longhd
[RE] Dsp - POC CTF 2025
Go to Top

티스토리툴바