計算機領域中的「Pwn」是什麼意思?
前言#
在觀看本系列文章時,建議至少有撰寫高階語言的經驗,並且確保了解基礎的計算機概論相關知識,尤其程式編譯、組譯的意思,以及知道何為執行檔 (Binary)、記憶體。並且除了特別注明之外,操作環境之系統為Ubuntu 20.04.5 LTS。
「Pwn」是什麼?#
單字「Pwn」源自「Own(擁有)」這個詞,其主要含意為「在競爭環境中,對手完全慘敗,而自身處在完全勝利的情況下」。
而在計算機領域當中,又被稱作「Binary Exploitation」,如字面上的意思,就是利用程式弱點達到目的,有著將目標拿下、獲得控制權等含意。
例如駭客駭入伺服器,並且獲得 root 權限,此刻的情境可以說是「該駭客 Pwn(ed) 了伺服器」。
(p.s. 「Pwn」有人念「碰」,有人念「胖」,阿我是都唸「胖」啦!)
Reverse Engineering (逆向工程)#
「Reverse Engineering」又稱作「逆向工程」,與Pwn息息相關。
我們都知道,當我們所撰寫的高階程式語言(High-level programming language)被編譯 (Compile)成執行檔 (Executable)後,無法再透過Binary直接還原成高階語言,但這些Binary code是可以被解析成Assembly language (組合語言)的。
因此透過分析組合語言,可以得知程式的的行為,並間接回推原本大致上的高階語言邏輯。
像是常見的遊戲外掛 (非腳本)、破解軟體等,基本上都與逆向工程相關。
正式開始,Start Learning Pwn!#
《Pwn - 0x01》Segments? Stack, Heap? .text, .data, .bss?References#
- 《Wiki - Pwn》https://zh.m.wikipedia.org/zh-tw/Pwn