Forensics
Medium
180 points

Leak

Recuite 2025 - HCMUS
6 tháng 10, 2025
PCAP
SQL Injection
Blind SQLi
Database Leak
Recuite 2025 - HCMUS
Forensics

Leak - Writeup

Challenge Information

  • Category: Forensics
  • Files: capture.pcap (6.5MB)
  • Hint: "Hacker leaked my website database. Recover what was leaked!"

Analysis

Attack Vector

Các yêu cầu HTTP POST tới /login chứa payload blind SQL injection nhắm vào cơ sở dữ liệu SQLite.

userid=123" OR [SQL_INJECTION_PAYLOAD]-- &userpassword=123

Injection Technique

Tìm nhị phân (binary search) sử dụng SUBSTR() và so sánh với CHAR():

SUBSTR((SELECT CAST(userid AS TEXT) FROM users LIMIT 0,1), 1, 1) != CHAR(97)

Câu lệnh kiểm tra xem ký tự đầu tiên của userid trong hàng đầu tiên có phải là 'a' (CHAR(97)) hay không.

Extraction Process

Kẻ tấn công lần lượt trích xuất:

  1. Schema của bảng từ sqlite_master
  2. Số lượng dòng trong bảng users
  3. Trích xuất từng ký tự của useriduserpassword
  4. Nhiều hàng được trích theo LIMIT (LIMIT 0,1; LIMIT 1,1; LIMIT 2,1; ...)

Decoding Leaked Data

Python script dùng để phân tích các truy vấn SQL injection trong pcap:

import subprocess, re, urllib.parse

result = subprocess.run(['tcpdump', '-r', 'capture.pcap', '-A'], 
                       capture_output=True, text=True)

# Extract SQL patterns
pattern = r'userid=(.+?)&userpassword'
leaked_data = {}

for line in result.stdout.split('\n'):
    match = re.search(pattern, line)
    if match:
        payload = urllib.parse.unquote(match.group(1))
        # Parse CHAR() values where != comparison used
        parse_successful_matches(payload)

(Ghi chú: parse_successful_matches(payload) là chỗ bạn thêm logic phân tích cụ thể — ví dụ trích các biểu thức CHAR(n) và ghi nhận phép so sánh thành công để tái tạo ký tự.)

Leaked Database

RowUser IDPassword
0adminguest
1aliceBPCTF{w4it_wh4t!!1_1_h4v3_b33n_3xf1ltr4t3d_XD}
2bobalice123
3charliebob123
4guestcharlie123

Flag

BPCTF{w4it_wh4t!!1_1_h4v3_b33n_3xf1ltr4t3d_XD}

Key Takeaways

  1. Blind SQLi Detection: Truy vấn kiểm tra từng ký tự (character-by-character) được sử dụng một cách hệ thống.
  2. PCAP Analysis: Cuộc tấn công được giấu trong các HTTP POST trông bình thường.
  3. URL Decoding: Payloads được mã hóa URL — cần decode trước khi phân tích.
  4. Pattern Recognition: So sánh ký tự bằng CHAR() được dùng cho tìm nhị phân.
  5. Data Reconstruction: Dựng lại dữ liệu dựa trên các phép so sánh thành công/không thành công.

Mitigation

  • Sử dụng truy vấn tham số / prepared statements.
  • Áp dụng rate limiting cho endpoint đăng nhập.
  • Thiết lập quy tắc WAF để chặn các pattern SQL đáng ngờ.
  • Giám sát logs để phát hiện các pattern SQL bất thường.
  • Áp dụng principle of least privilege cho database user.
180
Points
Medium
Difficulty
Forensics
Category