PWN Methodology

December 30, 2025 December 20, 2025 Info

Phân tích code

  1. Dynamic > Static: Chạy binary trước, reverse sau
  2. Sink-to-source: Tìm hàm nguy hiểm (gets, strcpy, memcpy) → trace ngược về input
  3. Bỏ qua boilerplate: Không cần hiểu toàn bộ chương trình, chỉ cần hiểu path từ input → bug
  4. Mental model: “Đây là sink nguy hiểm → ta có control được parameters không? → có sanitization trên đường đi không?”

Workflow

  1. 5 phút đầu: Chạy binary, hiểu sơ chức năng
  2. Dynamic test: Thử crash inputs (cyclic pattern)
  3. Static analysis: Tìm vulnerable functions
  4. Targeted dynamic: Confirm vulnerabilities
  5. Lặp lại static ↔ dynamic cho đến khi exploit xong

Fuzzing

Khi nào dùng:

  • Code obfuscated/ngôn ngữ lạ
  • Binary phức tạp (chạy AFL background trong khi phân tích manual)
  • Time-boxing: fuzzer 30 phút → không crash thì bỏ

Khi nào không dùng:

  • Buffer overflow đơn giản (cyclic nhanh hơn)
  • CTF giới hạn thời gian, setup fuzzer lâu hơn manual exploit

Học tập

  • Mắc kẹt lắm rồi → mới xem hint
  • Ưu tiên: Giải challenge mới > đọc lại writeup cũ
  • Cheatsheet: Tự build từ kinh nghiệm, phải searchable (tags, kỹ thuật)
  • Mindset: - kinh nghiệm tích lũy qua tricks/tips, không phải lý thuyết
⚠️ Draft: The post is still being written...