距離考過 OSCP 已經 2 個月了,終於比較空下來可以寫一下關於心得的文章~~,再不寫也要開始忘ㄌ~~,最近時常也有許多的朋友們來問一些準備訣竅等等的問題,為了避免常常被私訊問 + 回答一樣的問題,所以打算來寫一篇文,之後遇到一樣或類似的問題就直接貼這篇給他們看就好。
報名前的準備
在考 OSCP 前,我有一定的 Web CTF 經驗,但其實我的 Web 技術也不算是太好,大概就 AIS3 Pre-exam 勉強可以進去,或是金盾獎可以吊車尾的得名左右的程度,我覺得單純論 Web 的難度而言,對應上 CTF,這樣的程度就已經綽綽有餘了。 在 OSCP 的考試中,除了 Web 的技術之外,基本上用不到 Reverse 的技術,除了其中一題的 Lab 之外。而 Crypto 的技術基本上也用不到太多,只要會用工具,例如使用 CyberChef 做一些編碼、解碼、加解密就夠了。我覺得打滲透比起 CTF,最大的差異應該是思路,要先試著找出伺服器的特徵,尋找已知的 1-Day,千萬不要埋頭苦幹,100% 自己打洞,現實生活中的滲透也是如此。
之所以會想在這個時間點考 OSCP 主要就是因為在開始寫認真論文前,剛好有一個空檔的感覺,實驗室在做的計劃,學弟妹也都開始可以順利接棒,這段時間剛好可以來學一些有趣的東西。
各種便宜ㄉ練習機
因為 OSCP 的 LAB 跟考試真的貴鬆鬆 QQ,所以滿多人會使用一些第三方的靶機、LAB 來提前作一些練習,我在暑假的兩個月多月中,主要打了一些 Try Hack Me (THM)、 Hack The Box (HTB) 的靶機,其中, THM 約打了三十幾台,感謝飛飛借我付費版的帳號 >序號題目名稱日期備註1Dotty2021-10-09第一台2Alpha2021-10-15LP13Alice2021-10-15LP34Beta2021-10-16LP25Disco2021-10-16LP46Susie2021-10-16LP57Hotline2021-10-16LP68Break2021-10-179Core2021-10-1710Sufferance2021-10-18魔王題11Gh0st2021-10-18小魔王(?12Pain2021-10-19舊魔王13JEFF2021-10-1914Phoenix2021-10-1915Sean2021-10-20LP1016Mailman2021-10-2017ralph2021-10-2118Chris2021-10-21LP719MIKE2021-10-2220Leftturn2021-10-2221Mail2021-10-2422Jd2021-10-2523Bethany2021-10-26LP1124XOR-App592021-10-2625XOR-App232021-10-2726Tophat2021-10-2727SVclient082021-10-2828Humble2021-10-28魔王29Timeclock2021-10-3030Kraken2021-10-3031FC42021-10-3032DJ2021-10-31331nsider2021-10-3134Gamma2021-11-0135Bruce2021-11-0236Bob2021-11-0237Shared2021-11-13IT38Freddy2021-11-13IT39Chimera2021-11-14IT40Mvua0072021-11-14IT41Thelongnight2021-11-15IT42Tablemanners2021-11-15IT43Luigi2021-11-16Admin44Mario2021-11-16Admin45Jack2021-11-17Admin46Tricia2021-11-17Admin47Harry2021-11-17Admin48Ekzameno2021-11-17Admin49Kaitlyn2021-11-18Admin50Manager2021-11-18Dev51John2021-11-18Dev52Adam2021-11-18Dev533141592652021-11-1954Defender2021-11-1955Cory2021-11-1956Master2021-11-1957Nina2021-11-20IT58Carrie2021-11-20IT59Nicky2021-11-21IT60Brett2021-11-21IT61James2021-11-21Dev62Carol2021-11-21Dev63Peter2021-11-2164Pedro2021-11-2265Maria2021-11-2466SV-File012021-11-2567SVClient732021-11-2568SV-DC012021-11-2569XOR-App072021-11-2570XOR-DC012021-11-2571Ajla2021-12-1Sandbox72Zora2021-12-1Sandbox73Poultry2021-12-1Sandbox74Cevapi2021-12-1Sandbox75SandboxDC2021-12-1Sandbox
預約考試
很快的,時間就到了快要考試的時候,真心建議大家要在考試前至少兩周,或更早就申請考試時間,我在 Lab 快要結束的時候 (11月底),報名了考試,當時就只能預約到 1 月初的考試時間,因此我就預約了 1/12 的考試。

關於選定時間方面,有的人會喜歡選那種一大早的時間,認為這樣可以順順利利的打一整天,但我自己建議選考試時間的方式是:找一個對自己的生理時鐘覺得最舒服的時間,不用刻意早或刻意晚。例如我通常習慣中午左右起床 (糜爛的研究生),對我來說,熬夜比起早起清鬆太多了,所以我就選擇了起床,吃完午餐之後,醞釀一下情緒可以開始的時間,預計打個 12 小時左右也該休息了。
踩雷 - 5 考試改制
就在我預約完考試的幾天後,晴天霹靂的消息出現了, OSCP 官方突然發了一個通知: OSCP 改制!多增加了要考 AD 系列的題目,而 AD 題目如果沒有拿到分數,基本上就不可能通過。雖然我把所有的 LAB 題目都破完了,不過我的 AD 都亂打,我也不確定是不是使用正規解,再加上 AD 系列的東西在學生生活中真的太難碰到了 QQ,嚇得我趕緊開始做一些 AD 相關的練習。而且說不一定會有 Buffer Overflow 題目了,穩拿的題目也都變得不穩了 …… 怕 …….., 什麼鬼啦 QQQQQQ。
然後我的報名時間 1/12,而新制開始時間是 1/11,挖,天要亡我ㄇ,消息推出後的幾分鐘,我馬上上去看了修改時間的頁面 (每人有2次修改時間的機會),果然改制前的時間瞬間都滿了 QQ。
後來我不死心的想到就去亂抓點一下,在某一天晚上刷到了一個改制前的時間,我就訂下去ㄌ!

考試
考前準備
其實我考試前就已經滿有信心了,畢竟如果連所有的 75 題題目都破台還沒辦法考過的話,這考試就真的太設計的刁難人了吧,因此我是沒有太多緊張的情緒的,就只怕不小心觸犯了一些奇怪的規定而 GG。
聽朋友敘述,之前有人因為考試考到一半,上去 Google Drive 載自己的一些筆記,後來被視為考試作弊。因此為了避嫌,我在考試前把所有的筆記內容全部都存在本地,以避免任何的嫌疑。
另外也盡量不要使用 Hackmd、Notion 、Google Docs 等雲端的筆記軟體,避免任何被說作弊的嫌疑,我考試時是使用 Typora, 當然 Obsidian 也不錯,而 Word 那種邪教就算了,ㄏㄏ。
為了避免很順手的打一打就無意識地打開通訊軟體、FB 之類亂看,我直接在 Windows 上開了一個新的使用者帳號 (記得要開啟管理員權限),而這些社群軟體全部都是沒有登入的狀況,這種情況下才能保證不會自己手殘,真的不是要作弊 LA,就只是無意識的那種 …… 大家應該都會懂ㄅ。但請記得需要登入自己用來註冊 Offensive Security 帳號的那個 Email,考試過程中仍會用到!
還有一個很重要的是,請記得關閉 Windows Defender,我有一次在測試使用 Obsidian 寫筆記時,寫一寫檔案就爛掉,後來才發現是 markdown 裡面的 Payload 被 Defender 當作病毒,所以吃掉了 QQQ。 Windows Defender 不定時會自動開啟,所以寫筆記 / 存放筆記的目錄也記得需要設定成 Defender 白名單。
接下來可以先跑一下 Windows 自動更新,避免 Windows 在奇怪的時間突然想更新,就把電腦給關了 QQ。
在 Kali 的 VM 上面,建議考前最後一天,可以隨便開一台 THM 或 HTB 練一下手感,也確定機器裡面的各種設定都是正常的,在這個時候幫 VM 設一個 Snapshot (超重要 !!)。
Writeup 模板
官方有提供 Word 的報告模板,但我覺得 Word 很邪教,加上已經很習慣 Markdown 的感覺了,所以我是使用社群的這一套 Markdown 產生器,它下面還有 Docker 的版本,可以提早先練習寫看看。
我個人在考試跟練習時寫 Writeup , 都是先寫中文的,自己看的懂的筆記,之後再來整理成英文版的,因為考試過程中的 Writeup 有時候也是給自己看的,我對於英文的筆記,產生跟閱讀都需要比較長的時間,且考試結束後有 24 小時可以慢慢整理,所以到時後再來翻譯綽綽有餘。
考試當天
基本上就安裝一個他們的監控系統,看起來應該是 Chrome 的螢幕監控而已,如果有雙螢幕的話需要分享兩個螢幕,我記得登入系統的介面是考試開始前 15 分鐘才能登入,不然只會寫帳號錯誤之類,所以不用緊張。
等順利進入介面後,就透過 Web Cam 靠近的拍護照 + 自己的臉,然後拿起 Web Cam 把整個房間都繞一圈,包含桌面、桌下、天花板。我記得是說場地內有其他人沒關係,甚至有短暫的講話也沒關係,但我建議還是盡量保持室內只有一個人的狀況比較好。 我是選擇在家考試,因為前陣子,台科莫名地把 Exploit-DB 、 Hacktricks 等網站全 Ban 了,難保考試時不會突然又做什麼奇怪的改動,在臺灣學術網路底下考試的需要特別注意這個問題 QQ。
等監考的人確認完身分跟環境之後 (大概花了5分鐘),接下來要做的事情就是靜靜地等考試開始。在這之前監考官會說,它只負責監考,其他考試相關問題它都不能負責,請用 email 聯絡官方。另外我大致的詢問了關於休息需不需要報備等問題,監考官是跟我說在聊天室上講一下就好了,但不用等他回應,講完就可以離開位子了,我覺得每個監考官狀況可能不同,建議要考試的人還是提早問問看。
直到考試開始時,才會透過 Email 寄送考試的 VPN 以及控制面板的 ip 位置,所以這邊需要注意,記得在考試前先登入好 Email,不然在處理 Google 二步驟驗證之類時會很麻煩。
等收到之後,連上 VPN 就可以開考了,我連上 VPN 後就直接開始,打一打才發現監考官還有跟我說:「看你已經連上了,應該沒有什麼問題吧?祝考試順利! 」之類的話。
考試過程
想當然,考試的題目是不能洩漏的 QQ, 但我可以建議一下解題的順序。首先 Buffer Overflow 的水題可以最先解,而且水題的時候,可以放一些掃描的軟體,例如 nmap 或是 nmapAutomator 等等的東西丟下去自動掃,差不多解完 Buffer Overflow 也就都掃完了,就可以來解其他的題目了。
踩雷 QQQ
ㄛ這邊的雷就不怪官方了,是我自己的雷,因為在考試前幾天,剛爆出了 Log4shell 的漏洞,我試著在自己的 Kali 機器上面打 Poc,不過 Log4shell 有一個重點是, Java 版本有所限制,所以我的 Kali 上面安裝了奇怪的舊版 Java,而遇到 Web 題時,準備要開 Burp,而 Burp 相依的 Java 版本錯誤,就整個爛掉了。
我因為沒有提前測試過機器,也沒有題前幫 VM 做 Snapshot,所以就花了超過 1 小時在重新安裝 Java + 處理環境問題 QQ。
考試進度
我在考試時,其實算是滿頻繁的有在休息,只要一卡了,或是做到一個段落就停下來休息,我花了差不多 30 分鐘撿到了第一題 Windows 的 Buffer Overflow;接下來又花了 30 分鐘拿到了一題 10 分的機器。到此差不多總共花了 1 小時,我就離開位子到處散步了大概 10分鐘,接下來再花了 2 小時拿到下一台 20 分機器的 Root。再來就是處理 Java 環境花了 1 小時,再花了約 1 小時的時間拿到了第四台機器的 Initial Shell,時間就差不多晚上 7 點了。算一算到這個時候我已經拿到了 25 + 10 + 20 + 12.5 = 67.5 分左右了,基本上已經差不多了,就安心的吃了一個火鍋,好好休息。
吃完火鍋後,再花了差不多 1 小時時間就拿到第四台機器的 Root,也就是已經 80 分及格了,還剩下最後一題沒有解。但最後一題真的 …… 很通靈,想了很久還是想不出來,但想說其實已經及格了,所以壓力也沒有太大,我就花時間把前面幾題的截圖給全部補好, Writeup 該紀錄的東西也都先補詳細,然後差不多在晚上 12 點左右,我就去洗澡ㄌ,看看洗完澡會不會頭腦清醒一點 。但顯然還是沒有什麼想法,然後我就跑去喝了 1 杯 58 金門高粱,差不多一點多時,就去睡覺了。為了避免之後又要重新拍房間、確認身分之類的,所以我睡覺時電腦、檯燈、Webcam都沒有關,就讓它保持開著。
睡到大概四五點,突然間夢到了一個很奇怪的東西,想到該不會真的這麼ㄎㄧㄤ吧 ……,接著就爬起來用很ㄎㄧㄤ的方法,順利的撿到了最後一台的 initial shell,再來用相對很套路的方法打完了提權,終於順利破台了!也剛好看到日出了!
破台後帶著喜悅的心情,也不可能那麼快可以睡著,就再三的檢查有沒有各種小問題,並把 Writeup 需要的資料給全部都確認好,也真的在檢查過程中,發現到我的控制面板上面有一題的 Flag 傳錯了,因為考試的面板不會告訴你 Flag 是否正確,也幸好有做最後的檢查。
再休息了一下,做了最後的確認,在早上八點左右我就跟考官說我想要提早結束考試了,摁,結果考官完全沒有回應我,看樣子是還在睡呢 XDDD。先前我說要休息或是上廁所,他也都沒有回應。最後我就在留言版留言說,我想要提早結束考試,我已經將 VPN 切斷並不會再使用了,請在看到訊息時幫我終止。
考試結束
差不多考試結束的亢奮狀態持續到了中午,我在中午吃完午餐後,就睡了一個午覺,睡到天黑左右,再趕回台北,因為隔天剛好又是台科資安社的社課,我剛好要來分享關於滲透測試的東東 + OSCP 的一些經驗,回到台北後再開始熬夜整理最終版的 Writeup 上傳。
最終的報告 (Writeup) 需要在考試結束後 24 小時上傳 PDF 格式的 7z 壓縮檔,建議還是依照當時考試規定的方式來做,網路上有人說以前需要用 OSID 當作 7z 的密碼進行壓縮,而我的時候是不需要加密的!如果使用上述的模板的話,它會自動的壓好,直接上傳即可,但請還是要確認官方是否有修改規則。上傳後系統會顯示出檔案的 md5sum 可以拿來跟電腦上的比對看看,如果沒錯的話就按上傳即可,最後這一步驟的上傳也一定要記得按,據說之前有人就差這一步 …… GG ㄌ。
拿證照囉 !
隔了8 天左右就收到了通過的 Email,也可以申請線上的證照來 Show Off (官方說的)
隔了一個月後,終於在農曆過年前,拿到了實體的證照,是透過 DHL 從菲律賓寄出的!然後傳說中的魔法小卡……材質…….好爛,感覺像是國小在校門口,補習班發的那種粗粗的塑膠墊板的感覺,ㄏㄏ。

終於 OSCP 的旅程告一段落 QQ,之後我會再考 OSWE 或 OSCE ㄇ?我也不知道,目前眼前最大的問題是碩士論文該要開始動了 Q___Q
至於新制的題目建議,目前我聽說好像還是會遇到 Buffer Overflow,然後 AD 系列的題目 Initial Shell 沒有太簡單,如果有得到更多相關的消息,我會再回來更新這篇文,就先醬ㄅ 88。