胸口像是被浸透了水的棉花死死堵住,每一次喘息都帶着鏽蝕鐵片刮過喉嚨的腥甜。耳朵裏是永無止境的“嘀嘀”聲,不是心跳監護,是手機裏十幾個網貸APP交替響起的催債提醒,尖鋭得能刺穿顱骨。視野裏一片模糊,只有天花板上那盞沾滿油灰的舊吸頂燈,散發着昏黃、將熄未熄的光。
三十五歲,滲透測試工程師。名頭聽着像那麼回事,可龍傲天自己清楚,混跡網絡安全行業十年,他乾的始終是最底層、最沒有技術含量的活——用現成的工具跑一遍基礎掃描,對着模板堆砌一份敷衍的報告。月薪七千,在這個一線城市,付完房租、女兒的託費、林林總總的生活開銷,所剩無幾,甚至還需要透支信用卡才能維持。十年,技術毫無寸進,人脈近乎於零,只剩下日益增長的年齡和堆積如山的債務。
前妻柳如煙……不,在法律上他們還沒離婚,但分居已近一年。最後一次爭吵,她抱着女兒,那雙曾經盈滿愛意的杏眼裏只剩下冰碴子和徹底的失望,“龍傲天,我跟着你,看不到任何希望。”那句話,比任何漏洞利用代碼都更具殺傷力,將他最後一點尊嚴也擊得粉碎。
完了,三十五歲,失業,負債,家庭破碎。意識沉入無邊黑暗前,這是他唯一的念頭。
……
猛地睜開眼。
刺目的光線從未完全拉攏的窗簾縫隙裏鑽進來,像一把燒熱的匕首紮在眼球上。鼻腔裏不是出租屋的黴味,也不是醫院消毒水的味道,而是一種……打印紙、灰塵和空調冷氣混合的,屬於寫字樓的特有氣味。
他躺在一張略顯破舊的辦公椅上,身上是那件穿了三年、領口已經磨損起毛的灰色Polo衫。眼前是熟悉的隔斷,熟悉的電腦屏幕,屏幕上還停留着一份只寫了一半的滲透報告,術語蒼白,邏輯混亂。
“龍傲天,發什麼呆呢?人事部劉經理叫你去一趟,趕緊的。”
一個聲音在旁邊響起,帶着毫不掩飾的幸災樂禍。龍傲天僵硬地轉過頭,是同事小王,那張比他年輕七八歲的臉上堆着虛假的關切。
人事部?劉經理?
心臟像是被一隻冰冷的手攥住,猛地一縮。
這個場景……這句話……
他幾乎是撲到電腦前,鼠標光標顫抖着移向右下角的日期。
2025年11月11日。
上午,10點37分。
十年!他回到了十年前!被公司裁員的那一天!
一股混雜着極致狂喜和深入骨髓恐懼的戰慄,從尾椎骨一路炸響到天靈蓋!他重生了!真的重生了!回到了這個人生的斷崖邊上!
前世,就是在這個光棍節的上午,他被劉經理用“業務收縮,組織優化”的理由清退。之後六個月,他意志消沉,靠微薄補償金和偶爾的兼職度日,最終為了餬口,不得不接受一份更差、更沒前景的網安運維工作,拿着七千塊,在行業底層腐爛,直至最終被債務和絕望吞噬。
“龍傲天?聽見沒?別讓劉經理等久了。”小王又催促了一句,眼神裏的輕蔑幾乎要溢出來。
龍傲天深吸了一口氣,那口混合着塵埃和冷漠的空調氣涌入肺中,反而讓他混亂的大腦清醒了一絲。他站起身,沒有理會小王,徑直朝着走廊盡頭的人事部辦公室走去。
步伐,從一開始的虛浮,逐漸變得沉重,每一步都像是踩在過往十年失敗的灰燼上。
……
人事部的談話和前世的記憶重疊,分毫不差。劉經理那張公式化的臉,説着“感謝貢獻”、“公司戰略調整”、“N+1補償”之類的套話。
前世,他在這裏驚慌失措,試圖辯解,甚至流露出哀求,最終換來對方更加不耐和鄙夷的眼神,抱着紙箱失魂落魄地離開。
這一次,龍傲天只是沉默地聽着。當那份解除勞動合同協議推到面前時,他拿起筆,指尖因用力而微微泛白,在那份宣告他前世失敗起點的文件上,簽下了自己的名字——龍傲天。
筆尖劃過紙張,發出沙沙的聲響,像是割斷了某種無形的枷鎖。
接過那個輕飄飄、只裝着幾本舊筆記本和一個水杯的紙箱,他轉身,走出了這家耗費了他三年青春卻一無所獲的公司大門。
室外,2025年深秋的陽光帶着一股清冷的味道,灑在身上。他站在車水馬龍的街邊,看着眼前喧囂而陌生的世界,那口積壓了十年,混合着悔恨、不甘和絕望的濁氣,終於被他長長地、緩緩地吐了出來。
沒有回家。那個所謂的“家”,只是一個不到二十平米的出租單間,此刻只會放大他的孤獨和失敗感。
他拐進了街角一家看起來還算乾淨的網咖,用身上僅剩的幾十塊錢開了個小包間,三個小時。
坐下,開機。屏幕上幽藍的光映着他此刻蒼白而複雜的臉。
沒有半分猶豫,他直接打開瀏覽器,輸入了那個曾經如雷貫耳卻始終不敢真正觸碰的網址——漏洞盒子。
這個匯聚了無數白帽黑客、通過挖掘並提交漏洞獲取賞金的眾測平台。前世,他總覺得自己的技術太差,怕丟人,怕浪費時間,怕面對那些技術大牛的嘲諷,一直以“積累經驗”為藉口,徘徊在外,只敢遠遠觀望,聽着別人吹噓又挖到了哪個高危漏洞,賺了多少賞金。
怕。一個“怕”字,貫穿了他碌碌無為的前世。
註冊賬號。ID?他指尖在鍵盤上停頓了片刻,敲下——Dragon。一條渴望重生、渴望騰飛的龍。
平台界面簡潔而專業。他沒有像無頭蒼蠅一樣去尋找那些熱門、競爭激烈的目標。以他目前半生不熟、遺忘殆盡的技術,去碰那些,純屬炮灰。
他利用前世殘留的、模糊的記憶,篩選着那些標註為“公益漏洞”或者“無現金獎勵”的項目。這些項目通常屬於政府機構、公益組織或一些小眾開源軟件,安全性要求高,但缺乏商業賞金,關注度相對較低,正好適合他用來練手,重新熟悉流程和工具。
第一個目標,他選擇了一個地方性的公益志願者服務平台。印象裏,這個平台後來似乎出過一點小問題,但具體細節早已模糊。
打開Burp Suite,配置代理。生疏。手指放在鍵盤上,很多快捷鍵和命令都需要停下來想一想。那些曾經勉強掌握的原理、步驟,在十年的蹉跎和底層重複性工作中,早已遺忘大半。
他笨拙地攔截着HTTP請求,逐個參數地測試,試圖尋找SQL注入、XSS跨站腳本這些最基礎的漏洞痕跡。
時間在敲擊鍵盤和鼠標點擊聲中流逝。
一個小時,兩個小時……
汗珠從他的額角滲出。不是因為勞累,而是因為一種深入骨髓的焦慮和無力感。他看着數據包在眼前流動,卻像看天書一樣,抓不住任何可疑的點。很多測試方法只記得個名字,具體操作細節一片空白。前世,他聽得最多的,就是同事們吹噓自己用了什麼高級技巧,繞過了什麼防護,而他自己,連最基礎的Payload都構造得磕磕絆絆。
“媽的……”他低罵了一聲,一拳輕輕砸在桌面上。重生歸來的興奮和雄心,在冰冷的現實技術壁壘面前,開始褪色。
難道重活一次,還要走回老路?
他不甘心!
強迫自己冷靜下來,他不再盲目測試,而是打開漏洞盒子的知識庫和一些基礎的教學文章,一邊看,一邊對照着目標網站進行實踐。就像一個小學生,重新開始學習走路。
下午三點多,就在他幾乎要放棄這個目標時,在一個用户反饋提交的功能點,他發現了一個潛在的存儲型XSS漏洞。輸入框對特殊字符過濾不嚴,他嘗試插入了一段簡單的alert腳本。
提交,刷新頁面。
沒有彈窗。
他皺緊眉頭,仔細檢查代碼和響應。原來是前端的某種過濾機制起了作用,但過濾得並不徹底。他嘗試了幾種不同的編碼和繞過方式,依舊失敗。
技術,還是不夠。知道有問題,卻無法有效利用和證明。
他嘆了口氣,沒有輕易放棄,而是將這個可疑點詳細記錄下來,標註為“疑似存儲型XSS,需進一步驗證”,暫時保存到本地。
轉向第二個目標,一個高校的學術資料共享系統(測試環境)。同樣是公益項目。
這一次,他更加耐心,像個考古學家一樣,一寸寸地梳理着網站的結構和參數。
臨近網咖時間結束,在一個論文檢索的接口,他發現了一個更明顯的問題——服務器端模板注入(SSTI)的痕跡。某個返回錯誤信息的頁面,直接將用户輸入的部分內容未經過濾就渲染了出來。
心臟猛地一跳!
這個漏洞他有點印象,前世好像聽人提起過類似的案例。他努力回憶着相關的利用方式,嘗試注入一些基本的模板指令。
成功了!雖然只是讀取到一些系統基礎信息,遠未達到命令執行的地步,但這確確實實是一個有效的中危漏洞!
狂喜只持續了短短几秒。
因為他發現,由於對利用技術的不熟練,他無法構造出更有效的Payload來證明漏洞的危害性,也無法穩定地復現。提交漏洞需要清晰的步驟和證明,他現在做不到。
最終,他只能將第一個目標的“疑似XSS”和第二個目標的“確認存在SSTI,但利用不完整”這兩個半成品,作為“公益漏洞”提交了上去。沒有賞金,甚至連漏洞評級都可能因為沒有充分證明而被打折。
看着提交記錄裏那兩個帶着“公益”標籤、狀態為“待審核”的漏洞,龍傲天靠在網吧有些油膩的椅背上,感到了前所未有的疲憊和……清醒。
重生,並沒有直接賦予他超羣的技術。前世的他,底子太薄,荒廢太久,聽過的“吹牛逼”並不能轉化為實戰能力。一切,都需要從頭再來,需要付出比旁人更多的努力。
他關掉電腦,走出網咖。外面華燈初上,深秋的晚風帶着涼意,吹在他因長時間面對屏幕而發燙的臉上。
路邊的櫥窗裏,倒映出一個有些單薄、眼神卻不再迷茫的身影。
第一天,顆粒無收。
但他挖到了兩個漏洞,哪怕是不值錢的公益漏洞。更重要的是,他重新坐到了電腦前,拿起了工具,開始了真正的、屬於自己的探索。
技術可以重新學習,經驗可以慢慢積累。
只要方向對了,就不怕路遠。
龍傲天裹緊了單薄的外套,匯入下班的人流。他的背影在霓虹閃爍的都市夜色中,顯得格外堅定。
懊悔的從前,或許無法完全抹去,但未來的路,他要一步一步,自己走出來。
————聲明:小説內容,純屬虛構,如有雷同,純屬巧合。————