在很多年前,有做过一个根据漏洞挣钱的不法软件。
嗯,具体是哪个商城给忘了。
那时候才写软件没多久。要说技术吧。还真没多高。
就会点POST,GET之类的。
但是对于一些很菜的漏洞,还是可以针对的了。
当时是一个人找的我。
给了一个地址,然后说扫出可用的优惠卡。看面值,然后他去卖,最后分成。
扫也很简单,无非就是在那个网页不停的试优惠卡。
因为优惠卡是一个固定长度的英语和数字的字符。
而且还有规则可寻。
比如前面是年份,然后月份,优惠卡类型这些。
真正不同的数据可能就7、8位。
软件怎么弄呢?
就把已知的固定的数字,字母给确定不动。
然后不确定的地方。
使用0~9,a~z这样循环来试。
也就比如4位的 0000,0001,0002,0003……
这样试下去。
挂一个晚上,还是能扫出很多卡的。
那时候大概做了几天。
每天挣几百。
对我来说,很多了。
过了几天之后那个人说不做了,有事。
然后我自己也就没做了。一个是对钱没太多概念。还在大学。
一个是这个钱来路不正,也不太敢。
还有就是麻烦,自己要去找买家。
大概优惠卡就是100元的卖70~80给别人一张。
来说说这种漏洞的防范措施。
其实一般是不会出现这种漏洞的。
只是可能程序员没想到有我们这种坏人。
嗯,其实这种坏人有很多,当时绝对不止我们在做。
防范措施有几个:
一、每次输入优惠卡时需要输入验证码。
这种不能杜绝,但能阻止一部份小菜鸟了,估计也能阻止当年的我。
二、每个IP地址一天内输错N次后封IP。
如果一个正常的客户有优惠码,肯定是复制粘贴。即使是手动输入,也不会错10次以上吧?
当然,这种还可以使用代理IP来绕过,只是会增加服务器的资源消耗和破解者的资源消耗。
三、终极措施,只在需要优惠卡时才生成。
什么意思呢?就是当用户获得优惠卡的时候,再生成,然后绑定到用户的帐号上。
而不是先生成一批空白卡在数据库,然后有用户获得了,再从数据库里读取一个发放给用户。
比如卡里不确定的数字有4位,没有字母。那总共出现的可能性就是10*10*10*10=10000。
也就是说这种情况下,软件只用试1W次,就可以把这批卡从头到尾的给试完。
这时候你如果生成了5000张卡放到数据库。
那软件就基本上试两次会得到一张正确的卡。
而如果是在需要时才生成呢?
还是一样的。有10000张卡。
现在没有用户获取优惠卡,后台并没有生成放到数据库。
这时候软件从头到尾的试,一张也试不出。
当有一个用户需要优惠卡时,后台才生成。而软件也要试10000次,才能得到这一张卡。
而且如果卡绑定用户名了,那么即使试出来了,也用不了。
换个角度说,如果必需让卡是不记名的。
也就是虽然A用户获得了,但是B用户也可以用的这种情况。
需要时再生成,也可以有效防止被撞库。