iT邦幫忙

鐵人檔案

2024 iThome 鐵人賽
回列表
Security

從0開始的打Pwn教學 系列

從組合語言和Reverse開始到簡單的Stack Buffer Overflow漏洞教學。

鐵人鍊成 | 共 30 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文 團隊妳有什麼好 idea 嗎
DAY 1

【Day-1】從0開始的基礎

前言 我認為要從0開始學習Pwn是一件很難的事情,就算想要做簡單的Stack buffer overflow return 到程式碼當中的 system(&qu...

2024-09-15 ‧ 由 肉鬆 分享
DAY 2

【Day-2】組合語言與EFLAGS

組合語言x86 組合語言分很多種,常見的有x86和ARM等,這邊介紹這次實作以及常用的指令,當然除了介紹的這些以外還會有很多沒有介紹到的,比如組合語言中的假指令...

2024-09-16 ‧ 由 肉鬆 分享
DAY 3

【Day-3】GDB常用指令

這次的Reverse會用兩種作業系統和反編譯工具來操作,這邊先介紹GDB的基本操作,這些指令都有縮寫,比如disassemble可以寫成disas,但這邊先介紹...

2024-09-17 ‧ 由 肉鬆 分享
DAY 4

【Day-4】Windows IDA介紹

接下來是Windows的IDA使用方式,在這次的操作中,使用IDA Free就可以達成所需要的目的了。一開始將程式丟進去之後,會是一個方塊狀的分析圖。 如果有條...

2024-09-18 ‧ 由 肉鬆 分享
DAY 5

【Day-5】第一個 Reverse

終於要準備開始逆向了,首先先用C語言寫兩個小程式在兩個系統中的HelloWorld的C語言程式簡單來說就是Helloworld字串會跑6次之後結束。 把它送到I...

2024-09-19 ‧ 由 肉鬆 分享
DAY 6

【Day-6】分配 Stack 空間

接著就是最重要的Stack部分,兩邊都是做一樣的事情。IDA顯示的30h等同於0x30,同樣的Ubuntu的0x10等同10h。 這邊開始就是程式在做Stack...

2024-09-20 ‧ 由 肉鬆 分享
DAY 7

【Day-7】程式的開頭

程式一開始可以在IDA看到程式Call了一個__main函數,但在Ubuntu的GDB中,程式則直接開始執行其他運算,這是因為IDA這邊會進行初始化的動作,而不...

2024-09-21 ‧ 由 肉鬆 分享
DAY 8

【Day-8】位元組順序介紹

這次要來說明Hex在存放時為什麼是顛倒的。 這是記憶體排放順序的問題,目前常用的記憶體排放順序主要有兩種,大端序(Big Endian)和小端序(Little...

2024-09-22 ‧ 由 肉鬆 分享
DAY 9

【Day-9】將值放入Stack中

接下來是將暫存器內的值放入Stack當中,也就是放入RBP的相對位址當中。 在Windows和Ubuntu的環境底下,下一行做的事情是一樣的,將RAX的值放入...

2024-09-23 ‧ 由 肉鬆 分享
DAY 10

【Day-10】Reverse 迴圈

再來就是做迴圈內的事了,兩邊都做了Jump的動作。 GDB比較快知道,跳到main+58的位址,因此我們直接看到+58的位址,簡單來說就是進行比較,是剛剛放入的...

2024-09-24 ‧ 由 肉鬆 分享