木箱是下午送到的,比 O1 預期的小很多。
他本來以為會有器械。叩門者的行囊在城裡是有點名氣的東西——那種帆布捲,攤開來一排口袋,每個口袋插一件工具,走在路上會叮叮噹噹地響。
箱子裡沒有那個。
裡面有三樣東西:一本很厚的書、一張摺起來的圖紙、一支細長的筆。
那本書是《破封導典》,厚到他單手拿不穩。圖紙攤開來是一間房間的構造圖,標題寫著「摹室」——一種可以整間複製、也可以整間回捲的房間。你在裡面把東西砸爛了,只要事先存過一份「影」,就能讓房間回到砸爛之前的那一刻。
那支筆叫記言筆。學派的規矩是叩門者進試煉場時必須帶著它,它會自動抄錄你做過的每一個動作。他把筆轉了兩圈,看不出機關在哪裡。
圖紙最下面有一行很小的字:
「摹室須自建。學派不代勞。」
他讀完圖紙花了一個晚上。他發現蓋一間摹室其實不難,難的是——
他住的地方沒有位置放它。
那間屋子的格局他閉著眼睛都畫得出來:進門一條窄走道,左手廚房,右邊房間,中間一張長桌。那張長桌是屋裡唯一的平面。
桌上有什麼呢。
有一疊三個月沒整理的帳單。
有兩疊書。
第一疊是術式書。這些年他自己去書坊買的,沒有人指定,也沒有人知道——講牆的結構、講各城邦的門鎖規制、講一些他當時還用不上的東西。有幾本已經被翻爛了。
其中三本翻得最舊。
一本講器械——各種現成的傢伙怎麼用、什麼場合用哪一件。
一本講牆與門——城邦最常見的那種牆,哪裡容易鬆,哪裡是照規制開的。
第三本講的是怎麼自己造一件小工具。
前兩本告訴你別人打造了什麼。第三本告訴你,你也可以自己打。
第二疊是異言文的學習書。那是另一種文字,另一個大陸的,跟叩門這件事一點關係都沒有。他學了幾年,斷斷續續,理由他自己也說不太清楚——大概就是想要有一件事,是不為了交給誰的。
靠牆那一頭,堆的是七年來從公會帶回家的舊卷宗。他一直沒丟,因為總覺得哪天會有人問起。
他在桌邊站了很久。
然後他去找了一個空箱子。
他把那些舊卷宗一份一份收進去。有幾份他停下來看了兩眼,是他做得最好的那幾件;有一份的第三頁還夾著他自己畫的斷面圖,鉛筆線都糊了。他看完,放進去。
沒有人會問起了。 這件事他其實三個月前就知道。
箱子封好,膠帶壓兩遍,推到床底下。帳單挪到櫥櫃上層。
兩疊書他沒有動。
他把它們往桌角推了推,挪出中間的位置,然後用一塊布把空出來的桌面擦了一遍。
桌子空了,書還在。
——清掉的是別人給他的。留下的是他自己買的。
他站在那張桌子前面的時候,忽然意識到一件事:這是七年來,第一件完全屬於他的東西。
沒有人排它的順序,沒有人決定誰能用它,也沒有人能在上面把他的名字劃掉。
一張破桌子。但是誰都動不了。
接下來是時間。
他先試了早起。第一天成功,第二天成功,第三天他在桌前睡著了,醒來的時候額頭黏在導典上,第七頁到第十一頁的字印了一點在皮膚上。第四天他沒有起來。
然後他把它挪到了晚上。
一個人住有一個好處:沒有人等他吃飯,也沒有人問他幾點睡。他回去,開燈,把桌上的東西挪開,坐下。
他給自己定的規矩很低——至少一小時。
不是兩小時,不是三小時。一小時。低到任何一天都推不掉,低到他找不到理由跳過。有些晚上他真的只坐了一小時就去睡了,而那天也算數。
後來這條線自己往後延了。等他開始打試煉場的機器,一坐下就很難停——因為一台機器不會在你想停的時候剛好結束。那段時間他大多打到午夜,偶爾更晚。
但規矩始終是一小時。 那條低到不像話的線,是他一年多沒有斷掉的唯一原因。
他算過:一天一小時,一年三百多天,如果守得住八成——
他算出一個數字,然後不敢細想,把紙翻過去了。
摹室蓋起來那天,他做的第一件事不是去叩任何一道門。
他先存了一份影。
然後他故意把房間弄壞——他挑了最快的方法,改了一個不該改的地方,房間立刻就歪了。牆的角度不對,門框卡住,燈也不亮。
他站在那間壞掉的房間裡看了一分鐘,然後回捲。
房間回來了。
他又弄壞一次,又回捲。第三次的時候他已經很熟了,從弄壞到復原不到十秒鐘。
導典上沒有教這一段。這是他自己想的——他想的是:如果我一定會把東西弄壞,那我最該先學會的,不是不弄壞,是怎麼回來。
那天晚上,他在桌上那本導典的第一頁空白處寫了一行字。
不是箴言,不是誓言,就是一句很普通的話:
「桌子是我的。」
他寫完,闔上書,去睡了。
第二天他打開第一頁,看見那句話還在,然後才翻到第二頁。
這個動作他重複了一年多。
這一篇是全系列最實用的一篇。如果你只打算照做一件事,照做這篇。
不要用公司的設備,也不要用你日常辦公的那台機器。 兩個理由:
最低成本的正確做法:一台自己的機器 + 一層虛擬化。
你的主機(Host)
└── Hypervisor(VirtualBox / VMware Workstation Player / Proxmox)
├── Kali VM ← 你的工作機
└── 靶機網段 ← DVWA / Juice Shop / Metasploitable
規格現實一點:16GB RAM、四核心、200GB 可用空間,就能跑得動 Kali 加一兩台靶機。32GB 會舒服很多,但不是門檻。
家裡有多的機器的話,Proxmox 這類裸機 hypervisor 更好用,因為可以把靶機網段真正切開。但第一天不需要——先把 Kali 跑起來比較重要。
故事裡的「存影」就是快照(snapshot),而它是新手最常忽略、最後最後悔的一件事。
至少留三層:
| 層 | 內容 | 什麼時候回捲 |
|---|---|---|
| 基準影 | 裝完 Kali、更新完、還沒裝任何東西 | 環境爛到不知道哪裡壞了 |
| 成形影 | 裝完常用工具、設定好 shell 與筆記工具 | 日常回歸點,九成情況用這層 |
| 臨戰影 | 每次開始打一台新靶機之前 | 打壞了、裝了奇怪套件、改了系統設定 |
然後是故事裡那一段,我認為是這篇最值得記住的一句:
如果你一定會把東西弄壞,那你最該先學的不是不弄壞,是怎麼回來。
建完環境的第一件事,是練還原。 存一份影,故意把系統改壞,然後還原,確認它真的回得來。做三次,做到你對「回捲」這個動作完全沒有心理成本。
這件事有一個很實際的效果:當你不怕弄壞環境,你才敢亂試。 而 OSCP 的整條路,靠的就是敢亂試。
這一段跟 Day 13、Day 28 是同一條線。雖然剛開始會有點覺得麻煩,但熟悉之後會發現很有用。之前就是跌過才發現到這樣做的好處。
不過,這邊只是舉例,每個人可以依照自己的習慣來設計,也可以一邊執行一邊修改,但一定要做。
~/labs/<靶機名或委託名>/
├── scans/ 掃描原始輸出
├── enum/ 列舉整理
├── exploits/ 用到的 PoC 與修改版
├── loot/ 取得的憑證、hash、檔案
├── screenshots/ 截圖(檔名帶時間戳)
└── notes.md 主筆記
三個原則:
nmap -oA 三種格式一次留,不要只看終端機20260915-2310-nmap-full.txt。三個月後你會需要知道順序Screenshot_2026-09-15_at_23.10.42.png,你之後不會知道那是什麼script 或 asciinema:完整錄下終端機工作階段。script -a ~/labs/<target>/session.log
HISTSIZE、HISTFILESIZE 拉大,加上時間戳(HISTTIMEFORMAT)為什麼這麼囉唆?因為報告需要可重現的步驟。長夜之後你要寫的不是心得,是一份別人照著做能重現同樣結果的文件。
這也是 Day 13 的伏筆:我第一次長夜失敗,真正的原因不在技術。
這一節對想往這領域走的人,比對考試更重要。
ip a、ip route 看一次最後一項要展開講,因為它保護的不只是客戶,更是你自己。
在真實委託裡,最麻煩的狀況往往不是你打壞了什麼,而是——你不小心多測了一點,而客戶認定你是故意去碰的。
這裡有一件這一行的殘酷事實:
你做了什麼不重要。別人認定你做了什麼才重要。
你解釋「那台機器的 IP 跟授權清單只差一碼」沒有用,你說「我只是掃到,沒有進去」也沒有用。一旦對方認定你越界,你就是越界。
所以確認範圍不是禮貌,是自保。而且要留下紀錄:你依據哪一份清單、在什麼時間、確認過哪些目標。
開工前確認 scope,就是這一行的洗手。 你不會每次都看見細菌,但你每次都要洗。
(考試也一樣:打到範圍外會直接取消資格。習慣現在養成,日後執行委託時它會保護你。)
新手最常犯的錯是第一週裝了四十個工具,然後每一個都只會按預設值跑。
前兩個月,這些就夠:
-sV)其他的等你遇到需要再裝。工具的數量不會讓你變強,對一個工具的理解深度才會。
最後回到最難的部分:時間。
我的規矩只有一條:每天至少一小時。
不是兩小時,不是三小時——一小時。低到任何一天都推不掉,低到找不到理由跳過。這條線設得越低,越不會斷。
實際上後期會自己延長。開始打靶機之後很難準時停,因為一台機器不會在你想停的時候剛好結束,那段時間我大多打到午夜。但規矩始終是一小時,那條低到不像話的線,才是一年多沒斷掉的原因。
在那段時間裡,配置大致是:
| 時段 | 做什麼 |
|---|---|
| 開頭 | 回顧昨天的筆記,決定今天做哪一件事 |
| 主體 | 實作。只做一件事 |
| 最後 | 寫筆記、存檔、記下「明天從哪裡開始」 |
兩個關鍵:
還有一件事,說出來有點難堪但很重要:那段時間一定會失守。 出差、加班、單純太累。守八成就很好了。
重點不是不中斷,是中斷之後回得來。 跟快照一樣。
先把桌子清出來。
這是第一道門。