How to Pwn???

Nguyễn Tín
3 min readOct 23, 2020

Vài dòng tâm sự

Trước kia có viết về pwnable cơ bản nhưng vì vài lí do riêng mà chưa hoàn thành được, nay vì các bạn khóa mới nên mình sẽ chém gió vài điều cho những ai chưa biết, biết rồi, có cả đam mê về bộ môn này. bài viết này chủ yếu mình sẽ focus vào những người mới nên những ai biết rồi các bạn có thể xem xét hoặc bắt lỗi mình nhé — bị anh h4niz chửi gà riết :((

Yêu cầu

  • Quan trọng nhất: có tinh thần tự học, tự tìm tòi, có tư duy logic
  • Có 1 box ảo linux (ubuntu, kali… — mình khuyến khích dùng ubuntu tự cài các tools hỗ trợ)
  • Biết dùng cơ bản về các lệnh linux
  • Có nền tảng assembly, C/C++, python
  • Biết dùng các trình disassembler, debug như IDA, gdb, ollydbg,…
  • Và 1 vài các yêu cầu cần thiết khác …

các kĩ thuật cơ bản

trước khi di sau vào vấn đề này, thì mình sẽ giải thích công việc chính của mảng này. pwnable (hay còn gọi là system exploitation) chú trọng về việc exploit các application, kernel … theo như nhu cầu hiện nay thì mảng này có các target như sau:

  • IOT(camera, router …)
  • Browser
  • Windows (kernel, software)

tùy vào mục đích cuối cùng của mình mà các bạn có thể tự tìm hiểu, học hỏi cho mình sau này. Còn trong pwnable CTF, thì đa phần chủ yếu sẽ exploit kernel. Để exploit được thì các bạn cần phải có kiến thức về architecture, OS,…

Buffer Overflow

có thể những năm cấp 3 các bạn sẽ từng nghe các thầy dạy tin học nói về từ này — tràn bộ đệm, nói dễ hiểu thì bạn cứ tưởng tượng mình đang có 1 ly nước đầy, bạn đổ thêm nước vào thì nó sẽ tràn ra đúng không?, kĩ thuật này thường xảy ra khi người lập trình không cẩn thận giới hạn user input sẽ rất dễ dàng dẫn đến tình trạng này.
ví dụ:

buffer overflow

đoạn code này thể hiện rõ được vì sau bof lại xuất hiện. nếu những ai đã từng biết qua lập trình C thì có thể hiểu được rằng hàm gets() nó sẽ nguy hiểm như thế nào vì nó không hề giới hạn user input!!!

ngay cả trình compiler có warning chúng ta về hàm gets()

references

Format String

cũng như trên thì lỗi này đa phần do người lập trình sai sót trong việc coding, dẫn đến hệ quả nghiêm trọng là dựa vào lỗi này, ta có thể giải quyết được rất nhiều việc trong lúc pwn hệ thống!!!

format string

references

Kết

thật sự thì bài viết này còn rất nhiều thiếu sót nhưng như mình đã nói, có tinh thần tự học, tự tìm tòi thì các bạn đều có thể vượt qua được các chướng ngại vật này. Cuối bài mình sẽ để link về bài viết pwn cơ bản kia sẽ giải thích rõ cách thức hoạt động của 2 kĩ thuật này như thế nào, dựa vào đó mà các bạn có thể phát triển theo mảng này

references

link pwn cơ bản
https://0xfeebe.medium.com/pwno0b-b472c07dbc8a

một số platform để chơi pwnable
https://www.root-me.org/en/Challenges/App-System/
https://pwnable.tw/
https://pwnable.kr/
https://2019game.picoctf.com/
https://2018game.picoctf.com/

--

--