Day2-ELF format & protection

ELF format ELF 是 Executable and Linkable Format 的縮寫,可以簡單稱為可執行檔。不同平台有不同的可執行檔格式,如 Windows 的 exe 和 Linux 的 ELF。而 ELF 檔又包含各種區段 (Section),這些區段在執行時會映射 (mapping) 到記憶體中。常見的區段包括:.text、.bss、.data、.rodata、.got、.plt 等。以下是對這些區段的介紹: .text 存放編譯後的程式碼 .bss 存放未初始化的全域變數 .data 存放初始化的全域變數 .rodata 存放可讀不可寫的資料 ex: 輸出文字 .got (Global Offset Table) 用於儲存動態鏈接 (dynamic linking) 時需要的外部函數的地址,並幫助程式在執行期間通過這些地址來訪問函數或變數。 .plt 用於動態呼叫外部函數 呼叫一個外部函數時,程式會先跳到 .plt,然後再由 .plt 透過 .got 找到實際的函數地址 以下是一段程式碼中各段落存在的區段 1#include <stdio.h> 2int a; // .bss 3int b = 100; // .data 4// .text start 5int main(){ 6 puts("Hello World!"); // .rodata 7 return 0; 8} 9// .text end 各區段皆可能成為後續內容可以利用的部分,不過目前可以先看過即可,後續講述到攻擊手法時會再進一步介紹 ...

2024-09-16 · 2 min · 339 words · YJK

Day1-Introduction to PWN & How to PWN

What is PWN? PWN 也稱為 Binary Exploitation,簡單來說,就是透過找尋程式中的漏洞,並利用這些漏洞來取得伺服器權限,或是直接使用 shell 獲取檔案,或者進行各種不同的利用。至於 PWN 的念法,有很多有趣的說法。由於 PWN 源自於 “own” 這個詞,因此有人讀作 “碰”,但也有不少人讀作 “胖”。 How to PWN? 從上面的簡單介紹可以看出,PWN 主要是透過發現程式中的漏洞,並利用這些漏洞達成我們想要的目標。那麼,應該如何找到漏洞呢?在這個過程中,我們可能會使用以下方法: 模糊測試 (Fuzzing) 分析原始碼 反組譯至組合語言 反編譯到原始碼 … 找到漏洞後,如何利用這些漏洞?常見的方法包括: 控制程式的執行流程 覆蓋返回位址 (Return Address) 修改變數值 至於我們的目標,通常包括以下幾點: 提取檔案 讀寫檔案 獲取 Shell 接下來的內容 上述所有內容將在後續的文章中一一為大家詳細介紹,並提供豐富的練習範例和實戰題目來進行漏洞利用。如果有想要學習的特定內容,也歡迎大家在下方留言區許願。

2024-09-15 · 1 min · 41 words · YJK