王贺青吧 关注:25贴子:897
  • 1回复贴,共1

【10.22】【心情】昨天真是吓死我了呢~~

只看楼主收藏回复

学校还有5张多出来的GeekPwn的门票,决定从信安工作室加入的新生中随机抽取。于是,我光荣地承担了写这个随机抽取程序的任务。
不一会儿,我就用PHP写好了这个程序(PHP是世界上最好的语言!),并发给了给我分配这个任务的学长。但是,我写的这个程序在逻辑上有个漏洞:
我用一个数组来存放所有的新生的名字。进行5次循环,每次循环随机生成一个大于0并且小于当前数组长度的整数,数组里面下标等于这个随机数的新生名字就会被输出,然后从数组里面unset。每次循环,数组的长度都会减一,但数据下标并不会改变,这就导致了程序会输出一个实际上并不公平的一个结果:第一次循环过后,数组中刚好在倒数第一位的同学就在后面几轮的循环中不可能被抽取,第二次循环过后,数组中刚好在倒数第二位的同学就在后面几轮的循环中不可能被抽取,以此类推。
还好我及时发现了这个漏洞,修改了代码,将它重新发给了学长。
中午,使用我的程序随机抽取的同学名单出来了。学长把我的程序代码公开到了工作室的QQ群里面,以保证公平性。
我乍一看代码——天哪,学长用的是我修改前的程序!!!我吓了一跳,赶紧告诉了一旁正在折腾centos的几个同学。那几个同学中,正好有数组中排名靠后的同学。


IP属地:上海1楼2016-10-22 11:31回复
    outstokenwa、百浪多熄被楼主禁言,将不能再进行回复
    我赶紧联系了学长。学长告诉我说,他用的就是第二个。我一看,果然是我眼花……看错了!


    IP属地:上海2楼2016-10-22 11:33
    回复