2020 ASIS Shared House Write-up

2020-08-16

前言

這題是我的第一題 kernel pwn, 學到了很多新東西, 用這篇文詳細的紀錄一下過程

感謝 HexRabbit 大大解題過程中的各種解惑 <(_ _)> 不然一開始我連 slub 機制都不知道是啥

主要參考了其他 write-up

這篇文除了解釋題目跟紀錄解題過程之外, 還會紀錄跟工具相關的部份, 希望對跟我一樣的新手有幫助 :)

  • 如果完全沒寫過 kernel module, 可以先去寫一個簡單的東東來玩看看再回來
Read More

.NET 筆記

2020-06-06

概述

先簡單有個概念,來個 wiki 上的圖

  1. 高階語言被編譯成 CIL (Common Intermediate Language)
  2. CLR (Common Language Runtime) 透過 JIT (Just-In-Time) 即時地把 CIL 編譯成 Machine Code 執行

跟 Java 蠻像的,可以看參考資料 4

.Net Java
CIL Bytecode
CLI (Common Language Infrastructure) JVM (注意這邊的 JVM 是規範而不是某個實作)
CLR (CLI 的其中一個實作) J9 VM

而參考資料 1 中提到

針對執行階段所開發的程式碼稱為 Managed 程式碼,而不針對執行階段所開發的程式碼稱為 Unmanaged 程式碼。

在 Windows 上,跑在 CLR 的程式碼就是 Managed 程式碼 (被 CLR 所管理),實際上管理了什麼東西,其一就是記憶體,例如提供 GC (Garbage Collection) 機制

從 Managed code 呼叫 Unmanaged libraries 需要用到 P/invoke 技術,這邊的技術細節先挖一個坑,之後另外寫文章說明

Read More

合勤 榮耀資戰 CTF 初賽 Write-up

2020-05-30

日誌分析

01

Log為誘捕系統連線資訊,請分析在此份log中,駭客最感興趣的前三名服務。flag為前三名服務 port 號,依序合併後的SHA1加密值(小寫)。

範例: 前三名服務 [80,5060,21] -> sha1('80506021') -> eeeb577554eeba6a9481f7e0306a514105724fca

答案格式:flag{port號合併後的SHA1加密值}

寫腳本來計算,python 腳本如下

with open('exam1.txt', 'r') as f:
    line = f.readlines();

counter = [0 for i in range(65537)]

for i in range(len(line)):
    port = int(line[i].split()[3].split(':')[1])
    counter[port] += 1
    print('{}: {}, counter[{}]: {}'.format(i, port, port, counter[port]))

biggest = [counter.index(x) for x in sorted(counter, reverse=True)[:3]]

print(biggest)
    
# flag{0e2c3e4dd79f9a26e591728c8af4e8347403127a}
Read More