發布於 

test

PWN_暫存器&保護機制

Register

通用暫存器

  • 參考

  • EAX : 累加器

  • EBX : 指向DS段的pointer

  • ECX : 字符、循環操作的計數器

  • EDX : I/O pointer

  • ESI : pointer 指向DS暫存指的資料

  • EDI : pointer 指向ES暫存指的資料

  • ESP : pointer in stack (SS段)

  • EBP : pointer to stack top (SS段)

    分段暫存器

  • cs : Code Segment

  • DS : Data Segment

  • SS : Stack Segment

  • ES : 預留

  • FS : 預留

  • GS : 預留

    EFLAGS暫存器

  • 狀態標示

    • CF : 進位(bit 0) 進位 -> 1 , else -> 0
    • PF : 奇偶 個位數為偶 -> 1 , else -> 0
    • AF : 輔助進位 , 標註低四位是否向高四位進位或借位
    • ZF : 零 為0 -> 1 , else -> 0
    • SF : 符號 小於0 -> 1 , else -> 0
    • OF : 溢出 發生 -> 1 , else ->0
  • DF : 控製字符串處理的從左到右或從右到左方向的標誌

  • 系統標誌、IOPL域 (用於控制作業系統、執行操作,不允許被應用程式所修改。)

    • TF : 追蹤 1->單步執行 0->連續工作狀態
    • IF : 中斷允許 1->可響應中斷 0->不可
    • IOPL : I/O特權 process的CPL<=IOPL才可訪問I/O地址,CPL=0可修改IOPL域
    • NT : 嵌套任務 1->嵌套 0->嵌套
    • RT : 恢復 1->禁用指令斷點 0->允許斷點
    • VM : 1->模擬8086模式 0->保護模式
    • AC : 對齊檢測
    • VIF : 虛擬中斷
    • VIP : 虛擬中斷等待
    • ID : 識別 1->支持CPUID指令 0->不支持

      EIP暫存器

      指向下一個指令

checksec

Arch

檔案執行的平台

RELRO

Partial RELRO/FULL RELRO, FULL RELRO = 無法修改got表

Stack

Canary found = 無法直接溢位修改返回地址,需改寫指標與區域變數

NX (No-execute) windows(DEP)

shellcode不可執行,可用ROP-chain繞過,堆疊中資料沒有執行權限

PIE(Postion-Indenpendent executable) window(ASLR)

地址隨機化,basic address會變

本網誌所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 授權條款。轉載請註明出處。

本站由 @Deng Yuan 建立,使用 Stellar 作為主題。