86
周六早上,雨晴在被窝里躺到快九点才起来。
不是没睡醒,是不想起来。被子外面有点凉,橘子皮趴在她脚边,压着被角,她一动猫就哼唧一声,好像在对她说“别动”。她就不动了,躺着看天花板。那两块水渍还在,形状没变过,一大一小,小的那个边缘有点发黄,可能是漏过水又干了留下的痕迹。
手机震了一下。
她伸手够过来看了一眼——苏晚发的消息。“今天有空吗?”
雨晴打了几个字:“有空,干嘛?”
“出来坐坐?好久没见了。”
确实有一阵子没见苏晚了。上次在食堂碰到,她匆匆忙忙吃了个面就走了,没怎么聊。雨晴想了想,回了个“行,几点”。
“下午两点,学校门口那家奶茶店?”
“好。”
她放下手机,终于从被窝里爬起来。橘子皮被她这一动彻底吵醒了,从床尾走到床头,跳下床,跑到食盆前吃了几口粮,然后回来蹲在门口看着她。
“你也要出门?”雨晴问。
橘子皮当然不会回答。
洗漱的时候水比上周更凉了。九月底了,晨间的温度掉到了十五六度,自来水冲在手上已经有了明显的寒意。雨晴搓了搓手,想着要不要开始烧热水洗脸。但这个念头只闪了一下就过去了——起床已经很困难了,再等水烧开,她可能会重新躺回被窝里。
早餐是燕麦片冲牛奶。燕麦片是超市买的散装,一大袋才八块钱,能吃挺久。她从袋子里舀了两勺倒进碗里,用热水冲开,再倒冷牛奶,搅一搅就能吃了。简单,不用开火,不用洗碗——碗是她昨晚用过的,冲一下就行。
她端着碗坐到书桌前,打开了笔记本。
第二个项目的信息收集已经做得差不多了。她昨晚把目标网站的目录结构扫了一遍,发现几个有意思的路径。今天打算再深入一点,争取在下周结束之前挖出第一个漏洞。
点开浏览器的时候,她先扫了一眼邮箱。没有新邮件。第一个项目的款项还没到账,甲方说要三到五个工作日,现在才过了两天,她不着急。但还是会忍不住看。
把邮箱关掉,她开始干活。
电商系统的功能比第一个项目复杂得多。有用户登录、商品搜索、购物车、订单提交、支付回调——每一个功能点都可能存在漏洞。她一个一个地看,先从前端入手,看看有没有XSS注入点。
在搜索框里输入了一段测试代码,页面弹出了一个对话框。她愣了一下,又试了一次,对话框又弹出来了。
反射型XSS。第一个漏洞就这么出来了。
她截了图,把测试过程和payload记录下来,放进报告模板里。这个洞不算严重,但至少证明她方向是对的。
继续测。
接着她又测试了登录页面的SQL注入。在用户名框里输入了一个单引号,页面报错了——数据库错误信息直接显示在页面上。这不是注入,但信息泄露也算是一个小问题。她记下来,打算在报告里提一句。
就这么测着测着,一上午就过去了。
橘子皮中途跳上桌两次,一次是在她面前走来走去,一次是直接趴在键盘上。雨晴把它抱下去,它又上来,抱下去,又上来。第三次的时候她放弃了,把笔记本往外挪了挪,让橘子皮趴在桌面上,她在猫的屁股后面打字。
十二点,她合上笔记本,去做午饭。
冰箱里还有昨天剩的半块豆腐和几根小油菜。她把豆腐切成小块,和小油菜一起煮了个汤,又煎了一个鸡蛋。汤就着煎蛋吃了两片吐司,午饭就算解决了。
洗碗的时候她看了一眼时间——十二点四十。离和苏晚约的两点还有一个多小时。她洗了个澡,换了身干净衣服。今天温度比上周高了一点,最高有二十四度,她穿了一件长袖T恤和一条深灰色的休闲裤,外面没加外套。
出门前她把逗猫棒拿出来,在橘子皮面前晃了晃。橘子皮扑了一下,咬住羽毛不放。雨晴拽了两下没拽动,松了手,橘子皮叼着逗猫棒跑到床底下去了。
“你玩吧。”她蹲下来朝床底看了一眼,猫的眼睛在黑暗中发着光,像两颗琥珀色的珠子。
她拿起钥匙,出了门。
学校门口那家奶茶店开在十字路口的拐角处,门面不大,但里面空间还行,摆了七八张小桌子。周末下午人多,雨晴推门进去的时候差点没找到苏晚——她坐在最里面靠墙的位置,面前放着一杯喝了一半的奶茶,手里拿着手机,不知道在看什么。
“这儿。”苏晚朝她抬了抬手。
雨晴走过去坐下。一个店员拿着菜单过来,她看了一眼,点了杯芋泥波波。苏晚说“你不是每次都喝这个”,雨晴说“习惯了”。
等奶茶的时候两个人聊了几句。苏晚说她上周月考了,数学没考好,被班主任叫去谈话了。她说这话的时候语气挺轻松的,像是在说别人的事。
“你呢,最近怎么样?”苏晚问。
“还行。”雨晴把吸管插进奶茶里,搅了搅,“兼职在做第二个项目了。”
“这么快?第一个做完了?”
“做完了,等付款。”
苏晚点了点头,喝了一口自己的奶茶。她点的是一杯杨枝甘露,杯壁上挂着淡黄色的果泥。
“你和听夏姐最近见了吗?”苏晚问。
“上周见了,她说这周末可能没时间。”
“你们现在不住一起了,会不会不太方便?”
雨晴想了想,说“还好”。不是敷衍,是她真的觉得还好。住在一起的时候,每天都能看到对方,但有时候反而不太说话。分开了,每次见面都变成了一件可以期待的事,会提前想该穿什么、该做什么菜、该说什么话。那种期待感,比天天见面更让人心里踏实。
苏晚没再问了。她总是这样,问问题点到为止,不会追着问。雨晴觉得这可能就是她跟苏晚待在一起不累的原因——苏晚知道什么时候该说话,什么时候该闭嘴。
两个人坐着聊了一会儿。苏晚说她最近在准备某个社团的活动,要写策划案,写得头都大了。雨晴说她最近在看Web安全的书,有些地方看不懂,要看好几遍才能明白。
“你说我们俩,”苏晚忽然笑了,“一个搞社团策划,一个搞网络安全,八竿子打不着,怎么还能坐在一起喝奶茶。”
“不知道。”雨晴也笑了,“可能因为离得近。”
苏晚笑了一下,没再接这个话题。
从奶茶店出来的时候快四点了。苏晚要回学校拿东西,雨晴骑电动车回家。路过菜市场的时候她没停——冰箱里还有菜,够今天和明天吃的了。
到家的时候橘子皮还在床底下,逗猫棒被它拖到了床的最里面,雨晴趴在地上够了好半天才够出来。逗猫棒的羽毛已经被咬得差不多了,塑料杆子上只剩两根残羽,半死不活地挂着。她把逗猫棒放在桌上,准备等会儿扔掉。橘子皮从床底下钻出来,蹲在桌腿旁边,仰头看着那根光秃秃的杆子,眼神里写满了“我的呢”。
“都秃了,明天给你买新的。”雨晴说。
橘子皮“喵”了一声,走到食盆前开始吃粮。
晚上雨晴做了青椒炒蛋和米饭。吃完饭洗了碗,她坐回书桌前继续做第二个项目。今天发现的XSS漏洞还不够,她需要再挖出至少两三个有分量的漏洞,报告才够充实。
她又测了文件上传功能。上传了一个图片马,系统只检查了文件头,没有检查文件内容——绕过了。她把图片马传上去,拿到了一个webshell。这个漏洞的严重程度比XSS高得多,她截了图,把整个绕过过程详细记录在报告里。
做完这些已经快九点了。
她伸了个懒腰,靠在椅背上。橘子皮从她脚边跳到她腿上,盘成一团。她摸着猫的背,猫发出咕噜咕噜的声音。
手机震了一下。她拿起来看——林听夏发的。
“今天降温了,明天更冷,记得加衣服。”
雨晴回了个“好”,然后又打了一行字:“你那边供暖了吗?”
“还没,要到十一月。”
“那你多穿点,别感冒了。”
“知道。”
雨晴盯着那两个字看了一会儿,想说“要不要我过去陪你”,但又觉得这样说太黏了。她们现在的关系和以前不一样了,住在一起的时候什么都可以随便说,分开了反而要斟酌每一个字的重量。
她放下手机,把橘子皮从腿上抱下去,站起来去洗澡。
周日早上,雨晴没睡懒觉。
七点多就醒了,比平时还早。她躺了一会儿,觉得睡不着,干脆起来。橘子皮还没醒,蜷在椅子上,头埋在尾巴里,像一个毛茸茸的球。
她去厨房烧了壶水,给自己泡了一杯茶。茶是超市买的袋泡茶,一盒二十包,九块九,味道很淡,但比喝白水强。她端着茶杯坐到书桌前,打开笔记本。
今天打算把第二个项目的漏洞测试做完,下周开始写报告。距离甲方给的截止日期还有两周,时间充裕,但她不想拖到最后一刻。
上午测试了几个功能点,在订单提交页面发现了一个逻辑漏洞——价格参数在前端提交,没有在后端校验。她试着修改了提交的参数,把一个商品的价格改成了零,系统竟然生成了订单。这是个严重的问题,如果被恶意利用,可以零元下单。
她把测试过程记录下来,截了图。然后继续测别的功能。
中午做了番茄鸡蛋面,吃完接着干活。
下午三点多的时候,手机响了。不是消息,是电话。她看了一眼来电显示——一个陌生号码。
她犹豫了一下,接起来。
“喂,请问是陈雨晴吗?”
“是我。”
“你好,我是XX科技的,之前跟你联系过兼职的事情。第一个项目的款项已经走完流程了,周一或者周二应该能到账。另外,第二个项目的甲方今天给了补充说明,我发到你邮箱了,你有空看一下。”
“好的,谢谢。”
“不客气,有问题随时联系。”
挂了电话,雨晴坐在椅子上愣了几秒。第一个项目的钱要到了。一千五百块。她打开手机银行,看了一眼余额——加上之前存的钱,现在卡里有三千多。她盯着那个数字看了一会儿,那个数字不大,但它是她自己赚的,不是家里给的,不是从生活费里省出来的,是她一个一个漏洞挖出来的,一行一行报告写出来的。
她把手机放下,打开邮箱,找到刚刚收到的那封邮件。补充说明的内容不多——甲方增加了一个测试范围,多了一个子域名要测。她把子域名记下来,打开浏览器访问了一下,是一个后台管理系统。
又要多干几天了。但她不觉得烦。多干几天意味着多赚钱,多赚钱意味着她可以少去几天便利店,多几天时间写作业,多几天时间睡觉。她算了算,第二个项目如果能顺利做完,再加上月底便利店的工资,这个月她能拿到将近四千块。
四千块。
她以前觉得四千块是一个很大的数字,大到她不敢想。现在她觉得四千块还是很大,但她够得着了。
晚上她把补充说明里的子域名测了一遍。后台管理系统的登录页面没有验证码,她试了几个弱口令,不行,又试了几个常见的默认密码,还是不行。她没有暴力破解的授权,不能再试了,把这部分记下来,打算在报告里提一下“缺乏防暴力破解机制”。
做完这些她关了笔记本,躺在床上。
窗帘没拉,窗外是深蓝色的天,看不到星星,也看不到月亮,只有远处楼顶的红色警示灯在一闪一闪地亮着。
雨晴把手机拿起来看了一眼——没有新消息。她把手机放到枕头旁边,翻了个身。
明天周一。
又要上课了。周一有语文和英语,周二有数学和物理,周三有生物和历史,周四和周五的安排她记不太清,但没关系,课表贴在书桌前面的墙上,抬头就能看到,不用特意去记。
日子就是这样。周一到周五上学,放学后做兼职,周末全天做项目,偶尔和朋友出去坐坐。每天做的事差不多,但每天都有那么一两个瞬间是特别的——比如英语课她答对了一个很难的问题,刘心怡朝她比了个大拇指;比如食堂的红烧肉炖得很烂,她用汤汁拌饭吃了一大碗;比如下午放学骑车回家,夕阳刚好挂在那栋楼的楼顶,圆圆的,像一个被压扁的橘子。
这些瞬间很小,小到不值一提。但它们像钉子一样,一个接一个地钉在日子里,把时间钉住,不让它稀里糊涂地溜走。
雨晴闭上眼睛。
明天要早起,第一节是语文课,要讲《记承天寺夜游》,她提前看过了,苏轼写的,很短,但她挺喜欢那句“何夜无月?何处无竹柏?但少闲人如吾两人者耳”。
她翻了个身,把被子拉到下巴。
窗外有风,吹得树枝轻轻打在墙上,一下一下的,像有人在敲门,又不像。
她听着那个声音,慢慢地睡着了。