Windows Pwn 筆記

工具

X64dbg

Cheat Engine

CL

為了測試 Windows 的功能如 SEH,採用 Microsoft Windows SDK(或Microsoft Build Tools 2015等)的 編譯器cl編譯程式。

  1. 開啟Windows SDK Command Prompt
  2. setenv /x86
  3. cl example.cpp

禁用ASLR

cl example.cpp /DYNAMICBASE:NO /link /FIXED 

修改成x86環境。

setenv /x86

關閉SafeSEH

cl example.c /DYNAMICBASE:NO /link /FIXED /SAFESEH:NO 

S.E.H

SEH為windows下例外處理的結構。

SEH結構體(32位元)

DWORD: 下筆SEH紀錄
DWORD: 例外處理

以上為32位元應用程式的SEH結構,64位元請參考

備註

學習時可能遇到SafeSEH啟用導致覆蓋過後無法轉跳到shellcode, 在練習時關閉此保護以降低程式安全性。

SEHOP

SEHOP為SEH覆蓋保護,透過檢查ntdllFinalExceptionHandler是否為 連結串列的末端,若不存在表示被複寫。

啟用的系統

在以下Windows版本與後序版本啟用SEHOP, 調整關閉啟用參見Microsoft文檔

參見

SafeSEH

檢查handler是否在SafeSEH表中,啟用可以導致無法劫持SEH handler。

windows pwn問題

DEP導致無法執行shellcode

常用api


Windows pwn Reverse Engineering