那面牆他覺得眼熟。
不是同一面——編號不一樣,位置也不一樣。但那種砌法他見過,那種接縫的處理方式他也見過。O1 蹲下去看了兩分鐘,越看越確定:這個他打過。
不是這一面,是很像的一面。三個月前,在鬥技場。
他站起來,把冊子翻開。
他找了一會兒才找到那一頁。
那一頁上有他的字。他認得自己的字,也認得那一天——他甚至記得那天他打到凌晨,打完的時候很得意。
那一頁上是一整排字。
一行接一行,從頁首排到頁尾。沒有分段,沒有標題,沒有空行。全部是他做過的動作:敲了哪裡、換了什麼、試了哪個順序,一條一條照發生的先後排下來,像流水帳。
偶爾夾著一行結果。「開了。」「沒反應。」「這個不行。」
就這樣。
O1 從第一行開始讀。
他讀得懂每一行在做什麼。那是他的手法,他認得。
但他讀不出來——他為什麼要那樣做。
第七行他換了方向。為什麼換?第七行沒有寫。
第十二行他忽然去試一個很偏的東西,偏到他現在看了都覺得奇怪。他當時一定是看到了什麼才會那樣做。那個東西是什麼?第十二行沒有寫。
第十九行他停下來,後面就空了半頁。那天他為什麼停?不知道。
他把整頁讀完,然後坐在石室的地上。
整整一頁,密密麻麻,記滿了「他做了什麼」。
沒有一個字寫他要拿到什麼。
那些指令是死的。它們是一連串手的動作,而讓那些動作有意義的東西——他當時看到了什麼、他在猜什麼、他想驗證什麼——全部留在三個月前那個晚上,一個字都沒有帶出來。
他不是沒有留下紀錄。他留下的是一份沒有意圖的紀錄。
他花了四個小時,把那面牆重新打了一次。
從最前面開始:勘、抄、試、找到那個口、排順序。全部重做。
打開的時候他一點都不高興。
因為他很清楚,這四個小時三個月前已經花過一次了。
那天晚上他做了一件事。
他翻回三個月前那一頁,把它重寫了一次。
這次他沒有按照動作的順序寫。他改成一段一段——每一段先寫他當時看到什麼,再寫他因此猜了什麼,最後才寫他做了什麼、結果是什麼。
寫完之後那一頁滿了,他還多用了一頁半。
寫這一份,花了他二十分鐘。
他本來想算一下,自己當初到底省下了多少時間。
算不出來。
因為他當初根本不是為了省時間才那樣寫的。
那天晚上他很累,但他還是坐下來寫了——他知道要留紀錄,他甚至還有點得意,覺得自己夠有紀律。他把做過的事一條一條記下來,因為那是他唯一想得到的記法。
沒有人跟他說過,紀錄裡最重要的東西不是動作。
他不是偷懶。他是不知道該記什麼。
但帳還是要付。
重寫的時候,他還發現了另一件事。
有幾段是失敗的——他當時試了一個方向,試了很久,最後沒用。
他本來想把那幾段刪掉。想想又沒有刪。
因為他寫那幾段的時候,並不知道那是錯的。 那是他當下真心的判斷,而且那個判斷有它的道理——他看到了某個東西,所以他那樣猜。錯的不是他的推理,是他當時手上的資訊。
刪掉那幾段,等於假裝自己當時就很聰明。
而下一次他還是會犯一樣的錯,因為他把原因也一起刪掉了。
所以他沒有刪。他在那幾段後面各補了一行,前面加兩個字:
後話:這邊卡超久,後來才發現是我帶的那本字典太薄了。換一本厚的立刻就出來,之前那幾個小時完全是白耗的。
後話:這裡純粹是耍笨。前面那張告示上明明就寫著鑰匙放哪裡,我看了三次,三次都跳過去。
他寫完看了一下,覺得這樣舒服多了。
前面那一段留著當時的他。後面那一行是現在的他。兩個人都在那一頁上,誰也沒有蓋掉誰。
然後他問了自己一個問題,而這個問題後來改變了他做筆記的方式:
「我到底是寫給誰看的?」
他一直以為是寫給自己的。
但「自己」是誰?
三個月前的他,知道那天的一切——知道他在猜什麼、在找什麼、為什麼要換方向。他寫那一頁的時候,腦子裡有一整套背景,而他以為那套背景會一直在。
今天的他沒有那套背景。
今天的他讀著那一頁,跟讀一個陌生人寫的字沒有兩樣。
他一直以為自己在寫給自己。其實他是在寫給一個陌生人。
而且是一個**沒辦法回信問他「你這是什麼意思」**的陌生人。
他在導典第一頁加了第六行。
那一頁現在是:
桌子是我的。
先做,再讀。
先看完,再動手。
換一座城,就要換一種讀法。
先有結論,就看不見證據。
寫給一個陌生人。
寫完之後他看了一下那一頁。
六行字,看起來像規矩,但他心裡知道那不是規矩。
那是六個他已經付過錢的教訓。
(他那時候還不知道的是:這一課他學得不夠徹底。
真正的帳單還在後面。Day 20 會收。)
這一篇談 OSCP 這條路上最無聊、最容易被跳過、而且最常在考試當天索命的東西。
很多人的筆記亂,是因為把三種用途完全不同的東西寫在同一個地方:
| 種類 | 回答什麼問題 | 給誰看 | 什麼時候寫 |
|---|---|---|---|
| 過程筆記 | 我怎麼做到的?為什麼那樣做? | 三個月後的自己 | 當下,邊做邊寫 |
| 校準紀錄 | 我是什麼樣子? | 覆盤時的自己 | 每台結束時(Day 12 那張表) |
| 報告素材 | 別人怎麼重現? | 客戶/評分者 | 當下,而且不能補(見第六節) |
Day 12 談的是第二種。這一篇談第一種和第三種,而它們有一個共同點:你以為你寫了,其實你沒有。
我自己的第一份筆記,長這樣:一整排指令,一行接一行,偶爾夾一行結果。
沒有分段,沒有標題,就是把做過的事按順序記下來。
回頭看的時候,我讀得懂每一行在做什麼——那是我的手法,我認得。但我完全讀不出來我當時為什麼要那樣做。
指令是死的。 讓它有意義的是它前面那個念頭——你看到了什麼、你在猜什麼、你想驗證什麼。而那個念頭,通常沒有被寫下來。
另外兩個病徵我後來也都中過:
② 流水帳結構——直列一路往下寫,沒有分段。翻一頁要讀三十行才知道講到哪裡。
③ 代名詞與相對指涉——「那個檔案」「後面那個參數」「跟上次一樣」「第三個」。當下很清楚,一週後全是謎題。
這三種都有一個共同特徵:寫的時候你確信自己會記得。 而那個確信是錯的,每一次都錯。
把記錄的單位從「一條指令」改成「一個念頭」:
看到什麼 → 所以猜什麼 → 所以做什麼 → 得到什麼
四個問題,一段寫完。指令當然還是要放,但它變成第三個位置,不是唯一的內容。
一個很好用的檢驗標準:
假設一個跟你程度相當、但完全沒看過這台機器的人,拿到你的筆記,能不能照著做出同樣的結果?
如果不行,那份筆記就只是一份紀念品,不是資產。
不要一開始就設計複雜的系統,那會變成拖延。這樣就夠:
# <目標名稱 / IP>
## 摘要
- 入口:
- 提權:
## 列舉
(指令 + 關鍵輸出 + 原始檔連結)
[截圖] ← 列舉階段就要開始截
## 取得立足點
### 看到什麼
### 所以猜什麼
### 所以做什麼(完整指令)
### 得到什麼
[截圖]
## 提權
(同上)
## 失敗的嘗試
(做了什麼、為什麼那樣想)
> 後話:
## 學到的一行
兩個提醒:
「學到的一行」是逼你把這台機器濃縮成可以進 checklist 的東西(Day 5 那本冊子的輸入來源)。
這是我自己最喜歡的一個習慣,也是我認為最被低估的一個。
失敗的嘗試我一定會寫。 而且我會在後面加一行,開頭兩個字固定是「後話:」。
我筆記裡真實長這樣:
後話:其實這邊卡超久的,後來才發現是字典檔太小了,應該用 110000 的,害我還用 ffuf 都爆不出來。
後話:就是這邊耍白癡了,前面提示明明已經有帳密了說。
後話:後來發現,不能執行 Burp Suite 是因為前面打靶機的時候把 Java 的模式改掉了,改回來就可以了。
為什麼要分成兩段,而不是直接把正確結論寫上去?
因為寫那一段的時候,我並不知道那是錯的。
那是我當下真心的判斷,而且通常有它的道理——我看到了某個東西,所以我那樣猜。錯的往往不是推理,是當時手上的資訊。
如果我把錯的那段刪掉、只留正確答案,那份筆記會變得很漂亮,但它會假裝我當時就很聰明。而下次我還是會犯一樣的錯,因為我把原因也一起刪掉了。
所以:
前面那一段留著當時的你。後面那一行是現在的你。
兩個人都在那一頁上,誰也不要蓋掉誰。
另外,「後話」還有一個很實際的好處:它讓寫筆記這件事變得沒那麼痛苦。
你可以在後話裡吐槽自己、罵自己兩句、寫得很口語。上面那三則我一則都沒有修飾——一份會讓你想打開來看的筆記,才是有用的筆記。
(第三則還示範了另一件事:很多卡關跟目標機器無關,是你自己的環境被你弄壞了。 這種事也要記,不然三個月後你會再壞一次。)
這一節如果你只讀一段,讀這一段。
截圖必須包含什麼
一張有效的證據截圖,通常要同時看得到:
whoami / id)hostname)ip a / ipconfig,證明是你打的)把這幾個指令跟旗標放在同一個畫面裡截一張,比分開截四張安全得多。
截圖當下就命名
Screenshot_2026-09-15_at_23.10.42.png 這種檔名,三小時後你就分不出來了。用 <目標>-<階段>-<內容>.png。
最重要的那條鐵律(Day 12 提過,這裡再說一次)
考試時間一結束,你就不能再截圖了。
所有畫面必須在時間內取得,一張都不能事後補。
它把一個「整理工作」變成了有硬性期限的關鍵路徑。
你如果打算「先衝分數,最後再回頭補證據」——那個「最後」可能不存在。因為最後兩小時你可能還在跟某台機器搏鬥,而且機器一旦被還原或連線中斷,那條路你還得重走一次才截得到。
正確的做法:拿到任何一個階段性成果,當下就截,當下就寫。
接 Day 4 講過的那些(script、tmux、-oA、history 時間戳):
最早我用 HackMD,用了大概半年多。 開箱即用、Markdown、隨手就能寫。
缺點是太陽春。筆記一多,我沒辦法把它們組織在一起,最後變成一堆彼此無關的頁面。
然後我換到 Notion,但只撐了幾個月。 我的計畫很完整:用「書」的形式分開 OSCP 靶機、HTB 靶機、還有 PEN-200 的教材重點,各自有結構、互相連結。
結果一直弄不好。
Notion 很強,但它強的地方需要你先想清楚資料結構——而我當時正在學東西,我的結構每個月都在變。最後 Notion 在我手上變成了「進階版的 HackMD」:我只是在上面寫 Markdown,那些資料庫、關聯、看板,一個都沒有真的用起來。
有意思的是,一起準備的夥伴 Notion 用得非常好。 我看過他的筆記,組織得很漂亮,該連的都連起來了。
我試著照他的方式做,做不起來。
這件事跟 Day 5 講 checklist 是同一個道理:別人的系統是他思路的形狀。你可以參考它,但你沒辦法直接住進去。
我很快就放棄了 Notion——**而且是趁早放棄的。**因為換筆記工具要把舊筆記整個搬過去,拖越久搬家成本越高。發現一個工具「你就是用不起來」的時候,越早跳越好,不要因為捨不得已經投入的時間而繼續耗。
最後我落在 Obsidian,一台機器一個檔案。純 Markdown、本機檔案、搜尋快、不綁平台。
它沒有 Notion 強。但它剛好不需要我先想清楚結構——我可以邊寫邊長,結構自己會浮出來。
所以選工具的標準,我會這樣講:
不要選最強的那個,選那個「你現在這個階段能真的用起來」的那個。
三個底線:搜尋要快、能貼圖、跟你的截圖資料夾對得起來(Day 4 的目錄規範)。
考試的報告是寫給評分者的。真實委託的報告是寫給一群你沒見過的人的——客戶的工程師、主管、稽核人員,甚至一年後接手的另一個人。
他們沒有你的脈絡,也不能問你。
所以「寫給一個陌生人」不是筆記技巧,是這一行的基本功。
(Day 28 會完整談報告。到那時候你會發現,這一篇其實就是那一篇的前半。)
我不想把這件事講成「偷懶的代價」,因為那不是實情。
當初不是為了省時間才寫成那樣。是不知道該記什麼。
知道要留紀錄,所以把做過的事一條一條記下來——那是我唯一想得到的記法,而且當下還覺得自己挺有紀律的。
我猜這是多數人的狀況:不是懶,是沒有人說過「紀錄裡最重要的不是動作」。
但帳還是要付。我為那一頁,重新花了四個小時。
而且那還是練習。 練習的時候你賠得起四小時。
考試的時候你賠不起。
你以為你在記錄過程。
其實你在寫信給一個陌生人——而那個陌生人,是三個月後的你。