每晚读一个学习测试技术de小鬼故事 【每晚一个细思极恐的软件测试小故事】第十五夜:大学体育选课
注意,今晚这个故事内容纯属虚构,请理性阅读,不要多想,胆小勿入!!!!!
大学的体育课是不同于初高中的,一般都是要同学们自选的,你喜欢打篮球?那你就选篮球课,一整个学期体育都教篮球。你喜欢踢足球,那你就选足球…一般是学校公布选课时间,然后大家登录自己的教务网,开始选课。
作者我并不是一个善于体育的男生,我那时的唯一爱好就是上网吧玩游戏…
可是有一天却出现了意外,我和往常一样去网吧通宵包宿,然后例行在凌晨三点多趁着天没亮偷偷摸摸回寝室。
因为寝室门早就锁了,所以那时候都是翻窗进楼道,然后去公共洗手间方便一下,然后再蹑手蹑脚回到寝室睡觉。
可是那晚却出现了异常,由于洗手间是声控灯,所以在进入之前都是一片漆黑。我进去后咳嗽了两声,灯就亮了,我也就开始方便起来。
就在这时!一股恶寒突然出现,我打了个冷颤,打这一下不要紧,我却用眼角余光看到洗手间的角落里站着一个人!
借着昏暗的灯光,我发现他此刻正面向墙壁,背对着我!可怕的是那墙壁没有任何小便池!而更可怕的是,那人一动不动,没发出一点声响,甚至呼吸声都没!而在我进来之前,这洗手间可是关灯的状态,我不相信有哪个人会大半夜三点钟站在漆黑又臭的洗手间里面向墙壁一动不动!
就算是恶作剧,也不可能这么下本吧?
我害怕的不行,大脑快速回想起家里亲戚老人说 如果看到脏东西,千万不要慌,一定要装看不见,慢慢撤离。所以我迅速方便完,提上裤子,想着装作看不见,然后悄悄的镇定的离开。
可结果!这个面壁的人居然特么的突然举起双手,开始无规则是晃动起来,每一下的动作都又生硬又扭曲,看着让人极度不适。而在当时的那种场合下更显怪异,毫不夸张的说,胆小的会当场吓死,任何恐怖片都无法做到这种身临其境的感觉!
此时我再也无法保持镇静,撒腿就跑,不要十秒钟就到了寝室门口,此刻也来不及回头看看那人是否追来,更顾不上避免吵醒室友了。拿钥匙开门进屋锁门一气呵成,行云流水。然后我蹲在门口大口喘气…
发出的关门声音也成功吵醒了室友们。在室友们惊讶的目光中,我诉说了刚刚的遭遇。
室友们一开始显然都以为我在说胡话,不过看到我吓到颤抖的情况也都开始将信将疑。
可这时候我们对门寝室却开了门,听着好像是被我刚刚吵醒的,然后有个同学也来了尿意,开始朝着公共洗手间走去了。
我们寝室的人都侧着耳朵听,谁也没发出半点声响。仿佛在验证着什么…
大概过了几十秒,就听见远处洗手间突然爆发出了一阵撕心裂肺的惨叫声!
“果然出事了!那个背影不是我的幻觉!” 我心说不好。
于是我一把拉开我们寝室的门,离得近的几个室友和对面寝室的人也都冲了出来。
只见走廊那边上洗手间的那位仁兄,此刻正在奋力的往回爬!是的,是爬,双腿在地上乱蹬!显然是已经吓到双腿发软了。
我们好几个大小伙子此时终于爆发怒气,心说不管那东西是人在恶作剧还是什么,今天都别想竖着出去!
露胳膊挽袖子,一大群人就冲到了洗手间,却发现哪里还有什么人影…
第二天,我们去问了高年级的之前在这个寝室楼的学长们。
本来不报什么希望的我们却得到了意外收获。
原来这个大一新生的寝室楼真的出过事。就是几年前的一次选体育课造成的惨剧。
说是选课,其实应该叫抢课。因为男生们爱玩的那几个球类课程几乎是一瞬间就满员了,所以手慢的就只能选那些剩下的课程,其中就有男生们最讨厌的舞蹈课…
而有个不幸的学长据说就是选到了舞蹈课,然后老师又很苛刻,这学长本身挺内向,手脚协调性差,所以总是被责备和留堂跳舞,在一阵阵的哄笑声中,学长选择在深夜的洗手间里…
那之后的几年里,不断的有大一新生被吓到,声称在半夜会看到了一个背对着自己跳恐怖舞蹈的男生背影。
而据说能让这不幸学长解除未了的心结,然后解脱的唯一办法,就是帮他选课到篮球课程!
如此简单的办法,去跟老师导员说一下不就完了么?不过在场的学长们劝我们省省力气,因为老师导员们压根就不信!更不可能荒谬的帮你去修改一个早已封存的学生的档案!
所以,大家的方法就是尽量不要晚上去那个洗手间,忍一忍到大二就可以搬出这个寝室楼了。
不过我想起自己那天晚上的遭遇,看了看其他被吓坏的室友们,我决定要靠我们自己来修改那位不幸学长的档案!
但是这要弄到那位学长的用户名和密码才行。
于是大家早上开始就分头行动,到了晚上我们聚在一起整合信息才发现,我们只拿到了学长的学号,也就是用户名而已,密码早已丢失了…
我们试了很多简单密码发现都不对后,大家也只能放弃了。
过了两天,大家也逐渐淡化了这件事。只有我还耿耿于怀,不肯善罢甘休。
为什么呢?因为只有我喜欢去网吧包宿通宵啊…我自己每次都是半夜回来,每次都要经过洗手间…
如果这事不解决,那么我这整个大一时间内还怎么安心去网吧通宵?
所以,有一天我正在包宿的时候,想起自己好歹也是学生会网络部干部,还是软件工程专业的高材生,觉得实在不能忍,打开那做工粗糙的教务网,我就开始想着有什么办法可以破解密码强行登录呢?
开始我在网吧试着登录自己账户,确保网络正常可以登录后,便开始了思考:
为什么用户名和密码登录后,大家进入的页面都一样,但是数据却不一样呢?
一定是有个存放我们所有同学档案数据的地方,登录页面带着用户名和密码去那里验证,成功了就带回对应学生的数据。(后来知道了这个叫数据库)
但是带回数据显示到页面上之后呢?如果修改了档案后点击保存按钮,那又怎么去数据库中更新对应学生的信息呢?怎么找到分的清是哪位同学的数据呢?
我自然而然的想到可能还是带了用户名和密码吧,不过此刻的档案数据页面已经不是登录页面了,还哪有什么用户名和密码了?
于是我又猜测,这用户名密码难道是第一次登录后就存放到了哪里看不到的地方?以便后续保存等功能都可以带上?(后来知道这个叫浏览器 cookie 缓存)
于是我找遍了浏览器 f12 里,查看各种隐藏的地方,都没用搜索到用户名或密码。
我果断的想到会不会存放的并不是用户名和密码,而是某个登录成功的凭证?(后来知道这就是 token 字段)
如果是这样,那么这个凭证一定是独一无二的,那么怎么才能找到呢?
我借来了一起包宿的另一位其他系的同学的账号密码,然后登录。
把所有的数据信息和我自己账户登录后的信息一一对应后果然发现了这个总是变化的 token 字段。
不过现在问题来了,这个 token 哪怕是同一个账号登录,每次都会不同,很显然是根据某种规则随机生成的!
那么系统又是怎么知道它在后台数据库对应的是哪个同学呢?
我猜测这个 token 一定还有一份存放在了数据库中。(后来知道,存在数据库的叫 session,存在本地浏览器是叫 cookie)
到此我基本试出来了我们教务网的登录逻辑。
那么接下来就是要怎么登录那位不幸学长的账号了…
我那一夜想了很多办法,也百度了几百次,网上都说这种登录是不可能被破解的。
于是我几乎要放弃了…正当我一筹莫展顶着那个 token 看的时候,突然我灵光一闪,蹦出了一个猜测!
这个猜测就是我能否伪装学长的 cookie 中的 token 字段,修改选课档案后发送保存请求呢?
我查阅了大量百度,第一次学到了时间戳和接口的概念。
我猜测每次登录 token 都变化的原因,应该就是其中使用了时间戳这个自增变量!而其他诸如用户名等变量都是不变的。
然后我就开始了大量猜测 token 生成规则的测试,皇天不负有心人,经过了几小时的奋战。
终于让我试出来了这个生成规则,在同一时间的时间戳下,我脚本生成和教务网的一模一样!
激动的我立即输入了那位学长的学号等信息,然后计算出 token,替换到保存请求中,点击。
经过一秒的漫长等待,接口返回一串字符:修改成功!
然后为了验证,我把这个 token 带入到了查询档案信息接口中,请求后得到了这个学长的各种信息!上面也赫然看着他的体育课从舞蹈改成了篮球!
虽然这个技术难题甚至称不上难题,但是对那时候刚刚解除电脑软件的我来说,在一切都靠猜测,靠推演的时候来说,真的堪称是奇迹了!
然后我尝试着带入了我班其他同学的学号,发现全部成功!理论上可以看到任何人的档案也可以修改任何资料了!这权限简直通天了!
当然我并没有做什么出格的事,只是简简单单帮我的室友全提前选了球类课程…其他什么都没干哦…
那天晚上我忐忑的走到了漆黑的洗手间,喊开灯后没有发现任何异常!这就说明大概率我解除了诅咒,帮那位学长了结了心愿!然后我狂奔回寝室公布了这个好消息。而那之后的确到我们毕业,也没再听说大一新生被吓到的事了。
后来经过很多年后,我才明白那晚自己有多幸运?(没准是那学长灵魂暗中指引吧…我破解登录的一路都非常顺畅。)
如果但凡这个 token 生成规则再复杂一点,或者带上我不知道的密码字段,或者带上了某个特定字符串 ,那么我将永远都无法解析出来。
幸运的是,学校教务网是外包给了一个社会小作坊开发出来的,各种性能功能都很辣鸡,更别说一丁点的安全常识了。当然,估计开发者也没想到大一学生中能有人破解这套登录系统,发现如此重大 bug 吧?
而这种天生的发现 bug 的能力也最终促使我成为了一名测试开发工程师。
本故事到此结束…
纯属虚构!!!
真的虚构的!!!