總結 這一次的鐵人賽從頭開始介紹了組合語言、如何使用 GDB、ELF 檔的保護機制與工具,接著介紹了 stack 和 heap 相關的漏洞。這段過程中,我將過去...
前言 昨天介紹了 Fastbin Corruption,今天我們將介紹這次鐵人賽的最後一個漏洞:Shrink the chunk。 Shrink the chu...
前言 在完成了兩天的 Heap Overflow 介紹後,我們將進一步探討另一個常見的漏洞:Fastbin Corruption。 Fastbin Corrup...
前言 昨天我們提到了較新版本的 libc 針對 unlink 所引入的一些機制,今天就進一步介紹這些機制的細節。 Corrupted double linked...
前言 前兩天介紹了 Use After Free 的概念和利用方式,今天要介紹另一種 Overflow,稱為 Heap Overflow。 Heap overf...
前言 昨天的題目是透過直接將執行流程改為我們事先設計好的後門。但如果我們沒有設置後門,其實在早期版本的 libc 中,仍然可以使用其他方式 leak 出 lib...
前言 在前面文章中,我們討論了 Glibc 的 malloc 和 free 流程,並介紹了一些相關的名詞。接下來,我們將探討與 Heap 相關的漏洞,而第一個要...
前言 昨天介紹了一些基本的名詞,今天我們來簡單說明 malloc 和 free 的運作流程。 malloc 前面提到,malloc 可以更有效率地分配記憶體空間...
前言 在昨天的文章中,我們提到 Heap 涉及到許多關鍵名詞與概念,如 chunk 和 bin。由於這些名詞在後續討論 malloc 流程時會高度關聯,因此今天...
前言 昨天我們已經結束了 stack 相關的內容,今天要開始介紹 PWN 中另一個非常重要的部分:Heap。相較於 stack,heap 涉及更多基礎知識,是一...
Lab 網址 前言 今天大致來到 Stack 部分的尾聲,前面的內容我們討論了幾個經典的 Stack 漏洞,講解了如何進行攻擊並編寫 exploit,也介紹了不...
Lab 網址 前言 今天我們將介紹一些簡單的知識,並在最後提供一個練習 Lab。看完前面的內容,大家可能會想:「如果我們可以調用 execve,那是否就能拿到...
Lab 網址 前言 如果我們沒有辦法有足夠的長度或方法 leak libc 或是構建 ROP chain,還有什麼攻擊方式嗎?其實有的,就是將 stack 直接...
前言 經過了這麼多天的 Lab,今天的內容就輕鬆一下,只講原理,不提供練習 Lab 囉! 如果大家有注意看前兩天的程式碼,應該會發現我都寫了一個 pop rdi...
Lab 網址 前言 昨天我們示範了如何在沒有拿到 libc base 且程式是動態鏈結的情況下,透過 PLT 拿到 shell。不過那是因為程式一開始就有呼叫一...
Lab 網址 前言 昨天剛學完神奇的 one gadgets,今天我們將回到 PLT 表,介紹 ret2plt 的攻擊手法。如果沒有足夠的 gadgets 可供...
Lab 網址 前言 昨天的內容利用了 libc 進行攻擊,不過實際上我們使用的 gadgets 長度既不算長也不算短。而且在之前的題目中,我們常常隨意填充 rb...
Lab 網址 前言 昨天介紹了 ROP,當程式使用靜態鏈結時,我們可以利用更多 gadgets 組合出 ROP chain。那麼,當程式為動態鏈結時,還有其他方...
Lab 網址 前言 昨天的 shellcode 是在記憶體區段有執行與寫入權限的情況下才可以執行,那如果程式啟用了 NX 保護,且沒有任何變數的記憶體區段有執行...
Lab 網址 前言 從今天開始,內容會變得更加困難。之前的題目可能有留一個後門函式,讓你可以直接開啟 shell,或是使用 system 函式來方便後續的操作。...
Lab 網址 前言 前一天我們介紹了 GOT 和 Lazy Binding 的機制,今天要介紹的是如何利用這些機制進行攻擊,也就是 GOT Hijacking。...
簡介 如果大家經常使用 file 指令來查看檔案資訊,應該會經常看到像下面這樣的一大串訊息: 你會注意到其中有一個資訊是 dynamically linked...
What is a Format String? 在 C 語言中,printf 和 scanf 是兩個常用的函式,它們透過格式化字串來處理參數。例如: sc...
Lab 網址 前言 經過了前一天的 lab,相信大家對於 buffer overflow 的原理已經有了更多的理解。既然我們能覆蓋判斷式中的值,那麼是否也能覆蓋...
Lab 網址 前言 經歷了前面的許多基礎知識與工具介紹,終於來到了第一個漏洞與第一個 lab。而這個漏洞可以說是最簡單也最基本的,就是 Buffer Overf...
簡介 GDB 是 GNU Debugger 的縮寫,它是一個功能強大的 command line debug 工具,支援多種程式語言如 C、C++、Fortra...
前言 這篇文章整理了筆者在練習 CTF 題目時常用的工具,有些工具在後續也會頻繁使用。另外,如果你有興趣一起跟著文章進行練習,可以使用文中提供的 Docker...
Introduction ASM 是 Assembly(組合語言)的縮寫。組合語言屬於低階語言,通常專為特定架構設計。相對於低階語言,高階語言更易於理解和使用。...
ELF format ELF 是 Executable and Linkable Format 的縮寫,可以簡單稱為可執行檔。不同平台有不同的可執行檔格式,如...
Pwn 念作「胖!」或「碰!」,這個詞源於英文的「Own」,即「掌控」之意,在資安領域等同於 Binary Exploitation,直譯為「二進制檔案利用」。...