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.
sqluserid=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():
sqlSUBSTR((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:
pythonimport 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