大家好,感謝每個來信的朋友,也再次抱歉每次回信都拖超久⋯
因為某些因素,緩衝區溢位的第三章到第六章將會離線,如對其內容有興趣的朋友仍可翻閱實體書參考,謝謝大家的支持:)
目錄在此
Happy hacking!
Security Alley
2016年6月5日 星期日
2015年9月20日 星期日
2015年8月9日 星期日
Insertion Sort
Insertion Sort 的作法應該是一般人直覺最容易想到的排序方法,像是給你一副亂掉的撲克牌要你從小排到大,先假設只有一種花色,例如說梅花好了。一般人可能會直接想到把牌理好展開(不管是在手上或在桌上),然後先找梅花 A,把它放在最左邊(或者獨立出來一排),然後再找梅花二,放在梅花 A 的旁邊,再找梅花三,放在梅花二旁邊,依此類推,從小到大去找牌,並且往左邊放。
舉例,假設一開始亂掉的十三張梅花牌,理好展開長這樣:
Q 9 K 5 3 A 8 2 6 4 7 10 J
第一個先找 A,放到最左邊:
Q 9 K 5 3 A 8 2 6 4 7 10 J
=>
A Q 9 K 5 3 8 2 6 4 7 10 J
然後找 2,放到 A 的旁邊,因為 A 已經固定了,所以我們眼光只要從 Q 以後開始去掃描就好:
A Q 9 K 5 3 8 2 6 4 7 10 J
^從這裡以後往右去找
=>
A 2 Q 9 K 5 3 8 6 4 7 10 J
^^^從頭到這裡已經排好了
再來是 3,因為 A 和 2 固定了,所以只要從 Q 開始掃描:
A 2 Q 9 K 5 3 8 6 4 7 10 J
^從這裡以後往右去找
=>
A 2 3 Q 9 K 5 8 6 4 7 10 J
^^^^^從頭到這裡已經排好了,排好的部份越來越多了!
依此類推。
另一種 Insertion Sort 的想法也是大家直覺上容易想到的作法,先把亂掉的十三張梅花理好展開,從第二張牌開始去和第一張比較,把兩張牌按順序排好,再來考慮第三張牌,去和前面兩張牌比較,將其插入在對應的位置,再來考慮第四張牌,去和前面三張牌比較,插入在對應的位置。舉例如下:
舉例,假設一開始亂掉的十三張梅花牌,理好展開長這樣:
Q 9 K 5 3 A 8 2 6 4 7 10 J
第一個先找 A,放到最左邊:
Q 9 K 5 3 A 8 2 6 4 7 10 J
=>
A Q 9 K 5 3 8 2 6 4 7 10 J
然後找 2,放到 A 的旁邊,因為 A 已經固定了,所以我們眼光只要從 Q 以後開始去掃描就好:
A Q 9 K 5 3 8 2 6 4 7 10 J
^從這裡以後往右去找
=>
A 2 Q 9 K 5 3 8 6 4 7 10 J
^^^從頭到這裡已經排好了
再來是 3,因為 A 和 2 固定了,所以只要從 Q 開始掃描:
A 2 Q 9 K 5 3 8 6 4 7 10 J
^從這裡以後往右去找
=>
A 2 3 Q 9 K 5 8 6 4 7 10 J
^^^^^從頭到這裡已經排好了,排好的部份越來越多了!
依此類推。
另一種 Insertion Sort 的想法也是大家直覺上容易想到的作法,先把亂掉的十三張梅花理好展開,從第二張牌開始去和第一張比較,把兩張牌按順序排好,再來考慮第三張牌,去和前面兩張牌比較,將其插入在對應的位置,再來考慮第四張牌,去和前面三張牌比較,插入在對應的位置。舉例如下:
2015年2月7日 星期六
Windows 軟體安全實務 - 緩衝區溢位攻擊
目錄
- 前言
- 第一章 - 預備環境與工具
- 第二章 - 改變程式執行的流程
- 第三章 - 改變程式執行的行為
- Shellcode 簡介
- 從 C 語言到 Shellcode
- 透過 Immunity Debugger 的外掛模組 mona.py 來取得 opcode
- 透過 Metasploit 的 nasm_shell.rb 取得 opcode
- 使用 NASM 取得 opcode
- 檢討我們的第一個 Shellcode
- 透過 PEB 手法來找到 kernel32.dll 的基底記憶體位址 - 摸黑探索作業系統內部
- 從 kernel32.dll 基底位址進一步找到 LoadLibraryA 函式位址 - PE 結構攀爬技巧
- 函式名稱的雜湊值
- 拼成一幅完整的拼圖 - Shellcode 二代誕生
- Metasploit 的攻擊彈頭 - Hello, World! 訊息方塊
- 擴張我們的境界 - 各版本的 Windows 以及 32 位元和 64 位元的差異
- 第四章 - 真槍實彈
- 了解現實環境 - 不同作業系統與不同編譯器的影響
- 模擬案例:C 語言程式
- 模擬案例:從 C 到 C++
- 模擬案例:攻擊網路程式
- 實際案例:KMPlayer
- 實際案例:DVD X Player
- 實際案例:Easy File Sharing FTP Server
- 實際案例:Apple QuickTime
- 第五章 - 攻擊的變化
- 例外處理的攻擊原理
- 例外處理的模擬案例
- 例外處理的真實案例 - ACDSee FotoSlate 4
- 例外處理的真實案例 - Wireshark
- Egg Hunt 的攻擊原理
- NtDisplayString 與系統核心函式的索引值
- NtAccessCheckAndAuditAlarm
- Egg Hunt 的模擬案例
- Egg Hunt 的真實案例 - Kolibri 網頁伺服器
- 萬國碼(Unicode)的程式以及攻擊手法
- 萬國碼程式的攻擊原理
- 萬國碼程式的模擬案例
- 萬國碼程式的真實案例 - GOM Player
- 第六章 - 攻守之戰
- Security Cookie
- 攻擊 Security Cookie
- Security Cookie 無法處理的例外
- 安全的虛擬函式
- SafeSEH
- 攻擊 SafeSEH
- SEHOP
- 攻擊 SEHOP
- DEP 與 ASLR
- 攻擊 ASLR
- 設定 ASLR 案例環境:OpenSSL 與 zlib
- ASLR 第一個案例:覆蓋 ret 攻擊
- ASLR 第二個案例:Visual Studio 2013 與例外攻擊
- Windows 8 和 Windows 10,安全嗎?
- ROP (Return-Oriented Programming)
- 攻擊 DEP 的六劍
- 第一劍:ZwSetInformationProcess
- 第一劍的進階型態
- 協助工具:ByteArray
- 第二劍:SetProcessDEPPolicy
- 第三劍:VirtualProtect
- 第四劍:WriteProcessMemory
- 第五與第六劍:使用 ROP 串接多個函式的呼叫
- 防守方全軍出動:FinalDefence.exe
- 難道只有 Windows 7 x64?
- 真實案例:KMPlayer
- 不只是 Hello, World!
- 後記
2015年2月6日 星期五
Windows 軟體安全實務 - 緩衝區溢位攻擊:後記
全書目錄在此。
這本書從動筆到如今已經三年多了,其實真的寫作時間大概三個月,只是中間有一些波折,以至於延到如今才完成。
有幾件有趣的事情在這三年多的時間內發生了。
第一件是國際上發生了幾起針對 DNS 的大規模攻擊事件,就如同本書前言中所預測的。
第二件是微軟大約兩年一個週期推出新的作業系統,所以本書也將後來的 Windows 8 和 Windows 10 (Technical Preview) 當作範例加進來。
第三件是緩衝區溢位的攻擊越來越少見,雖然發生的時候都是極大的影響力,例如 OpenSSL 的 Heartbleed 事件,或是 Adobe flash player 的漏洞。扣除掉複合式 APT 攻擊以外,現今以針對網頁軟體的攻擊為大宗,例如 OWASP 統計 Injection 已經是連續蟬聯近兩年的第一名。未來應該也是繼續這樣的趨勢。
在本書前言一開始設定讀者有兩個條件,一是對網安有興趣,二是學過基本的程式設計。雖然閱讀本書沒有很高的技術門檻,但是並不代表本書的內容淺顯易懂。事實上本書的內容相當艱澀,畢竟,要將書中的主題解釋清楚,真的不是一件容易的事。
如果您已經熟稔緩衝區溢位相關技術,即使本書對您來說可能太過簡單,還是期待您能在其中發現一些新想法。如果您是剛踏入這個領域,抱持著興趣與熱情,筆者期待這本書對您的幫助,是遠超過目前網路或坊間所有雜亂資料的。
筆者雖然花費許多心血與時間撰寫,盡可能確保內容與範例的正確無誤,但是難免有出錯的可能,還請讀者們不吝指教。可以寄信給我,或者直接在本站留言。
最後,也最重要的是,感謝我的家人,有他們的支持才會有這本書。特別要感謝我的太太。
fon909 (at) outlook.com
民國 104 年 2 月 6 日
這本書從動筆到如今已經三年多了,其實真的寫作時間大概三個月,只是中間有一些波折,以至於延到如今才完成。
有幾件有趣的事情在這三年多的時間內發生了。
第一件是國際上發生了幾起針對 DNS 的大規模攻擊事件,就如同本書前言中所預測的。
第二件是微軟大約兩年一個週期推出新的作業系統,所以本書也將後來的 Windows 8 和 Windows 10 (Technical Preview) 當作範例加進來。
第三件是緩衝區溢位的攻擊越來越少見,雖然發生的時候都是極大的影響力,例如 OpenSSL 的 Heartbleed 事件,或是 Adobe flash player 的漏洞。扣除掉複合式 APT 攻擊以外,現今以針對網頁軟體的攻擊為大宗,例如 OWASP 統計 Injection 已經是連續蟬聯近兩年的第一名。未來應該也是繼續這樣的趨勢。
在本書前言一開始設定讀者有兩個條件,一是對網安有興趣,二是學過基本的程式設計。雖然閱讀本書沒有很高的技術門檻,但是並不代表本書的內容淺顯易懂。事實上本書的內容相當艱澀,畢竟,要將書中的主題解釋清楚,真的不是一件容易的事。
如果您已經熟稔緩衝區溢位相關技術,即使本書對您來說可能太過簡單,還是期待您能在其中發現一些新想法。如果您是剛踏入這個領域,抱持著興趣與熱情,筆者期待這本書對您的幫助,是遠超過目前網路或坊間所有雜亂資料的。
筆者雖然花費許多心血與時間撰寫,盡可能確保內容與範例的正確無誤,但是難免有出錯的可能,還請讀者們不吝指教。可以寄信給我,或者直接在本站留言。
最後,也最重要的是,感謝我的家人,有他們的支持才會有這本書。特別要感謝我的太太。
fon909 (at) outlook.com
民國 104 年 2 月 6 日
2015年1月3日 星期六
Wireshark 無 root 權限執行
Wireshark 預設如果沒有 root 權限,會抓不到網路界面。其實這是一個可以很容易解決的問題,按照 wireshark 官網上的一個問答就可以解決了。
簡單來說,執行以下:
其中 dpkg-reconfigure 那一步選擇 yes,如果願意的話,可以花點時間讀一下它告訴你的,基本上 wireshark 的安裝文件裡面也有寫。
reboot 那一步當然也可以用圖形界面來操作,如果不願意 reboot 其實也有別的方法,但是我發現最單純的步驟最不會出錯。
簡單來說,執行以下:
$ sudo apt-get install wireshark $ sudo dpkg-reconfigure wireshark-common $ sudo usermod -a -G wireshark $USER $ sudo reboot
其中 dpkg-reconfigure 那一步選擇 yes,如果願意的話,可以花點時間讀一下它告訴你的,基本上 wireshark 的安裝文件裡面也有寫。
reboot 那一步當然也可以用圖形界面來操作,如果不願意 reboot 其實也有別的方法,但是我發現最單純的步驟最不會出錯。
訂閱:
文章 (Atom)