第十六章 代码写不出来就尝试白嫖吧(第1页)
夜晚八点的芝加哥正是街头混混和醉汉们最活跃的时候,远处时不时地传来几句破嗓子的叫骂声和忽远忽近的刺耳警笛。
但这些南区特有的喧囂,似乎都被阻挡在了这间狭窄破旧的出租屋之外。只剩下深秋刺骨的寒风裹挟著枯叶,时不时地拍打著那扇漏风的破木窗户,发出令人牙酸的“嘎吱”声。
屋里没有开主灯。唯一的光源,就是书桌上那台散发著幽蓝光芒的廉价显示器。
杨坚整个人几乎都陷进了那张掉皮的二手办公椅里。屏幕的冷光打在他有些疲惫却异常专注的脸上,映出那双布著几根血丝的黑白分明的眼睛。他手里端著一杯早就凉透的速溶咖啡,机械地抿了一口苦涩的残渣,隨后烦躁地放下马克杯,伸手用力抓了抓有些凌乱的头髮。
在电脑桌的最边缘,鲍里斯给的那二十台成色不错的二手iphone正静静地躺在塑胶袋里,完全被主人无视了。
他並没有急著开工。刚刚到手的六百美金现钞还安安稳稳地揣在夹克內兜里,上个月拖欠的房租已经有了著落,眼下的温饱危机暂时宣告解除。
既然兜里有了这层厚实的现金缓衝垫,那袋子待破解的手机也就从续命的氧气瓶变成了隨时可以提现的定期存款。他完全没必要像个被高利贷逼债的倒霉蛋一样,连夜赶工去换取明天的口粮。
他现在有更充裕的时间和精力,去死磕那个真正能让他在这片资本丛林里撕开一道口子的东西。
杨坚的视线重新聚焦在屏幕上,那里正密密麻麻地滚动著一段让他死活跑不通的java代码。
他正在全神贯注地尝试復现那个在后世足以让全球网络安全界引发大地震的核弹级漏洞——log4jjndi注入漏洞。
具体的復现思路他脑子里门儿清,但问题就卡在了“构建恶意的ldap响应服务”这最关键的一环上。
“思路绝对没问题,但特么的这底层的协议怎么就这么难搞……”杨坚盯著屏幕上疯狂报错的终端,无奈地嘆了口气。
在目前的年代,根本没有后世那些一键生成恶意服务端的神器。他必须从零开始,硬搓一个能糊弄过java虚擬机的微型ldap伺服器。可无论他怎么修改报文的字节序,目標机器就是死活不加载他的恶意代码,不是报序列化错误,就是直接丟弃请求。
闭门造车了两天,进展不能说是步履维艰,只能说是一动不动。他现在看著屏幕上那些死活不听指挥的底层代码,感觉这玩意儿简直比南区街头最烂的酒鬼还要不可理喻。
杨坚也尝试了上网求助。毕竟在2011年左右,无论是国內还是美国的网际网路,技术论坛的氛围都极其真诚火热。没有割韭菜的付费教程,全是乐於分享的技术大牛。
为了防止被人顺藤摸瓜,他极其谨慎地给这个问题套上了一层偽装,將其包装成了一个“关於遗留老旧系统网络兼容性测试”的纯技术求助帖,发到了诸如stackoverflow早期板块以及几个知名的黑客与开发者bbs上。
发完帖子后,他就像个等开奖的赌徒,一边啃著隔夜的冷披萨,一边每隔五分钟就狂按一次f5刷新页面,期待著哪位顶著二次元头像的隱世大牛能从天而降,甩出一段神级代码直接打通他的任督二脉。
然而,现实往往比bug还要骨感。
论坛里虽然潜伏著无数大神,但並不是每一个帖子都能得到神仙下凡般的指点。杨坚问的这个问题实在太偏门、太底层了——“如何不依赖標准库,使用纯socket通信手动构造极其非標准的ldapasn。1响应报文,去迎合java命名接口(jndi)的底层解析规则”。
这种不仅是在钻牛角尖、甚至看著还有点像在搞破坏的底层黑魔法,发出去犹如石沉大海。好不容易等来几个回復,点开一看,全能让人气得脑充血。
一楼的架构师警察:“楼主你这纯属是陷入经典的xy问题了。你为什么要这么干?直接importjavax。naming。*用现成的api调標准库不香吗?奉劝一句,別閒著没事重复造轮子。”
二楼的吃瓜群眾:“这阴间需求看著怎么这么像在写木马或者搞渗透?楼主不会是哪个大学的本科生,在上网络安全课想骗论坛老哥帮你写期末大作业吧?”
三楼和四楼的论坛水军:“纯纯的底层黑魔法,不明觉厉,帮顶。”、“沙发没了,搬个小板凳蹲个大佬解答,先mark为敬。”
最离谱的是五楼,只留下了极其敷衍的四个字:“关机重启下。”
看著满屏这些让人吐血的回覆,杨坚一口气差点没倒上来。
这种感觉极其憋屈。就像是你手里明明捏著一张能造出歼星舰的图纸,跑去五金店问老板“怎么把这两根引信接起来不短路”,结果老板像看神经病一样看著你,语重心长地劝你“买个一块五的成品双控开关不好吗”。
偏偏他还根本没法跟这帮人解释!他总不能在帖子里大喊“老子在挖一个价值不菲、能让全网瘫痪的零日漏洞”吧?那估计第二天fbi就会踹开他这间漏风出租屋的破门。
“靠一群水友,黄花菜都凉了。”杨坚揉了揉发胀的太阳穴,果断关掉了满屏废话的瀏览器。
倒霉透顶的杨坚只能把目光投向了线下。
两天后,芝加哥大学计算机系的阶梯教室。