Cryptography
Easy
100 points
Baby Pad
Recuite 2025 - HCMUS
6 tháng 10, 2025
Padding Oracle
AES-CBC
Cryptanalysis

Cryptography
Baby Pad - Write-up#
Thông Tin Challenge#
- Danh mục: Cryptography
- Độ khó: Trung bình - Khó
- Lỗ hổng: Padding Oracle Attack trên AES-CBC
Tổng Quan#
Challenge này implement một AES-CBC encryption oracle với lỗ hổng nghiêm trọng: server leak thông tin về tính hợp lệ của padding. Đây là cuộc tấn công Padding Oracle kinh điển.
Lỗ Hổng: Padding Oracle#
Server cung cấp:
- Encrypted flag (IV được thêm vào đầu)
- Oracle service để decrypt bất kỳ ciphertext nào
- Quan trọng: Cho biết padding có hợp lệ hay không
Response từ oracle:
- Valid padding → "Message received!"
- Invalid padding → "Can't read that"
Phân Tích Toán Học#
Giải Mã CBC Mode#
P[i] = Decrypt_key(C[i]) ⊕ C[i-1]
Nguyên Lý Tấn Công#
Bằng cách kiểm soát IV (hoặc previous ciphertext block), ta có thể thao tác plaintext sau khi decrypt để tạo ra valid padding, từ đó khôi phục toàn bộ plaintext từng byte một.
Chiến Lược Khai Thác#
Thuật Toán Khôi Phục Từng Byte#
pythonVới mỗi ciphertext block C[i]:
intermediate[16] = mảng rỗng
Với byte_pos từ 15 xuống 0:
padding_value = 16 - byte_pos # 1, 2, 3, ..., 16
# Set các byte đã biết để tạo valid padding
Với k từ (byte_pos+1) đến 15:
fake_iv[k] = intermediate[k] ⊕ padding_value
# Brute force byte hiện tại
Với guess từ 0 đến 255:
fake_iv[byte_pos] = guess
Nếu oracle(C[i], fake_iv) trả về True:
intermediate[byte_pos] = guess ⊕ padding_value
break
# Khôi phục plaintext block
plaintext = intermediate ⊕ C[i-1]
Phân Tích Độ Phức Tạp#
- Queries mỗi byte: Trung bình ~128 (tệ nhất 256)
- Queries mỗi block: ~2048 (16 bytes × 128)
- Tổng cho flag: ~6000-8000 queries (hoàn toàn khả thi!)
Flag#
BPCTF{Just_a_simple_padding_oracle_attack_to_warm_up_49fab148518a}
Bài Học Rút Ra#
Chiến Lược Phòng Chống#
- Không bao giờ leak tính hợp lệ của padding - trả về lỗi chung cho mọi thất bại
- Sử dụng authenticated encryption - AES-GCM hoặc ChaCha20-Poly1305
- Thao tác constant-time - ngay cả timing cũng có thể leak thông tin
Insights về Tấn Công#
- Padding oracle attacks vẫn có liên quan sau 20+ năm
- Một bit information leak có thể phá vỡ toàn bộ hệ thống mã hóa
- CBC mode không có authentication rất nguy hiểm
- Mã hóa hiện đại cần sử dụng AEAD modes
Tài Liệu Tham Khảo#
100
Points
Easy
Difficulty
Cryptography
Category