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

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:
- Schema của bảng từ
sqlite_master - Số lượng dòng trong bảng
users - Trích xuất từng ký tự của
useridvàuserpassword - 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
| Row | User ID | Password |
|---|---|---|
| 0 | admin | guest |
| 1 | alice | BPCTF{w4it_wh4t!!1_1_h4v3_b33n_3xf1ltr4t3d_XD} |
| 2 | bob | alice123 |
| 3 | charlie | bob123 |
| 4 | guest | charlie123 |
Flag
BPCTF{w4it_wh4t!!1_1_h4v3_b33n_3xf1ltr4t3d_XD}
Key Takeaways
- 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.
- PCAP Analysis: Cuộc tấn công được giấu trong các HTTP POST trông bình thường.
- URL Decoding: Payloads được mã hóa URL — cần decode trước khi phân tích.
- Pattern Recognition: So sánh ký tự bằng
CHAR()được dùng cho tìm nhị phân. - 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