“负数”的漏洞
首先来打个比方:
我们来到当当网,选了一本20元的书,然后选择购买,在数量上填写了5本,在交款方式上选择预付款余额付款,然后点击提交,这时我们在当当的预付款便减少了100元——显而易见。
我们再次选择此本书,然后购买,在数量上填写了-5本(假如可以的话),依然是预付款余额付款,然后提交(假如通过的话)。那么想象一下,你的预付款余额会发生怎样的变化?如果当当网真如上面两个“假如”,并没有对负数进行验证的话,那么结果便是你的余额多出来一百元(当然,先不要考虑警察叔叔的后果)。
那么有没有这种可能性呢?
答案是——有!
因为我已经在某些地方试过了(汗!),而有些网站对数据的验证居然是简简单单的javascript,绕过提交就搞定了。
但是这个“负数”没这么简单,它还有可能指当前月与未来月以及已逝月的关系,也有可能是指逆序的关系等等(即反其道而行之)。大家可以以适当的方式在不同的场合试试,看看能不能发现点什么来。
今天在跟同学开玩笑时,突然发现了一件很严重的问题:
同学开的玩笑是:如果想利用ATM取款机(注意不是存款机)存钱怎么办?
我的玩笑是:先取100元,等这100出来了,不要动,再塞里100,然后让ATM吞回去不就行了!
当然这只是个玩笑,但是后来想一想——ATM吞回钱去以后会不会自动给你的帐户加100?
我们先认为会(即ATM吞钱时查数),于是问题出来了:如果我们塞假钱进去,能不能被识别呢?(取款机有时可是会蹦出点钞纸来哦!说明出款不验钞,但吞款呢?)
我们再认为不会(即ATM吞钱时不查数),又一个问题出来了:如果取200,我们仅拿出100,让另100吞回去,我们的帐户会有怎样的变化?
这个可谓逆向彻底了!
但我不敢去试,谁去试试?
更新(5月18日):收到好友–if–的反馈结果了,Monyer在此对其热心表示感谢!
Email原文:
亲 爱 的 monyer!
我测试了ATM 具体流程如下
(开始我卡里面有300块钱)
早晨我来到了ATM机旁边,看了看那个出钱口前面有个钢板,挺坚实的!看来往回放钱没戏了。
(首先我认为在拿钱的时候是一个事件触发,当事件触发了,ATM执行在账户内做减法,所以我们要避开事件触发,那个触发事件靠什么呢?一定是抓钱的那个卡子了!)
于是我在取款的时候输入100,然后轻轻的抽出了钱(ATM说什么我记不清了,ATM的大体意思是我没取钱让我联系银行),我查看了下账户少了100!
然后开始第二次测试,我手把钱捉住(并不取出,嘿嘿等它自动拿回去,按理说那个事件没触发,因为它先执行的是没有人取钱,所以自动会收回钱)嘿嘿果然和上次不一样 里面的滚轮转了起来 唰唰的想啊 我是乐的啊^^,ATM又出现提示和上次一样,我查了一下余额又少了100!
郁闷!开始第三次测试!我这次并没有取钱而是让ATM吞了回去!里面的那个滚轮又唰唰的响!(看来ATM不傻,还会在回去的时候点钱呢)然后ATM又出现了同样的提示!我查了下账户,又少了100!这下傻了!怎么吞了钱还减!于是打95595资讯,那个客服人员说那是理所当然的,让我去就近的一家银行去取。
第二天,我来到了银行,资讯了一下,银行的阿姨说“我就奇怪了这么看见那有一张100,那个ATM不是我们这管的,你要去底下离国贸很近的那家银行取”(看来被吞回去的钱和出钱的钱不是放在一起的)
我又来到了下面的银行,工作人员让我填了个表,上面要写银行卡号,户主名字,手机号码,事件发生时间。(填表的时候,一个中年人被骗了,是在ATM上取钱的时候以为卡被吞了,以为遇见了好心人提醒,结果被“好心人”去走了钱,哎,现在的骗子,也许不是专职的)
好了现在总结一下!说把假钱放进去,充当真钱,嘿嘿不太可能,提示一下上面有个钢板,如果ATM关闭那个钢板的触发事件是取钱的话,那么你就有危险了,当你往进放假钱的时候,可要小心您的手了!,如果你真的把假钱放了进去,看来假钱也是到了另一个“地方”等到最后还是会被你拿回去的!从三次测试来看ATM不论什么情况下只做减法!
Monyer
没有评论▼