获取无限量星巴克咖啡的方法

  • 获取无限量星巴克咖啡的方法已关闭评论
  • A+
所属分类:遊戲攻略大全
摘要

如何找到一种方法让自己星巴克礼品卡(星礼卡)中的钱变得无限量,里面的钱可以供应我余生的咖啡或者从里面偷出来2百万刀?先…

如何找到一种方法让自己星巴克礼品卡(星礼卡)中的钱变得无限量,里面的钱可以供应我余生的咖啡或者从里面偷出来2百万刀

先用15刀买三张星礼卡,每张5刀。

获取无限量星巴克咖啡的方法
在 starbucks.com 里面注册了个人账户,可以添加星礼卡、查询余额、不同星礼卡里面的钱还可以相互转账。

有一类非常有趣的漏洞叫做”竞争条件”。这个bug对于带有余额、凭证或者其他有限资源(主要是金钱)的网站非常常见。所以,把钱从card1转移到card2是这样的状态:第一个POST请求 :

POST /step1?amount=1&from=wallet1&to=wallet2

保存这些值到session中,然后进行第二个POST:

POST/step2?confirm

这步是事实上是转移了这笔钱,然后清空了session。

这使得漏洞利用非常困难,因为session在第一次确认请求中被破坏了,然后第二个请求就失败了。但是这个保护措施仍然很容易绕过:使用两个不同的浏览器(session、cookie不同)、相同的账户。

攻击的伪代码:

# prepare transfer details in both sessions 

curl starbucks /step1 -H «Cookie: session=session1» --data «amount=1&from=wallet1&to=wallet2» 

curl starbucks /step1 -H «Cookie: session=session2» --data «amount=1&from=wallet1&to=wallet2»  # send $1 simultaneously from wallet1 to wallet2 using both sessions 

curl starbucks /step2 ?confirm -H «Cookie: session=session1» & curl starbucks /step2 ?confirm -H «Cookie: session=session2» &

竞争条件是一种你永远不知道应用程序是否已经脆弱的弱点利用,你只是需要更多的尝试。很多开发者使用弱保护,比如限制每个IP/账户/活动的请求数量,使用随机延迟、或者使用错误方式DB交易。唯一正确的方式来进行安全保护就是pesseimistic lock。

最后成功了!Wallet1中有5刀的余额,第六次请求创建了两次5刀wallet1中的转账。现在有两张,分别有15刀和5刀(共20刀)的卡。存入15刀,现在花了16.7刀。

获取无限量星巴克咖啡的方法
这个概念已经被证明啦。现在让我们从信用卡里存入10美元,确保美国的司法系统不会因为1.7美金就把实验者送进监狱的。

2015年3月23日,给星巴克[email protected]发了email,4月29日收到了回复。最不令人开心的事情是,星巴克那个家伙联系之后连句谢谢都没有,还说这是欺诈、恶意行为!

关于竞争条件:

竞争条件是一个共享数据词汇,发生在当多个进程或者线程在读写数据时。多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间,这种情形叫做竞争。竞争条件发生在当多个进程或者线程在读写数据时,其最终的的结果依赖于多个进程的指令执行顺序。

可能很多人没有看明白这个漏洞是怎么回事,其实就是作者在把wallet1的钱转账到wallet2时,快速的发送多个相同请求,由于数据库没有把数据锁住,wallet1的钱还没有从数据库减少时,造成了两次转账,从而凭空多出来了5美刀。

参考

https://www.myhack58.com/Article/html/3/8/2015/62792_2.htm

S教授,并发错误导致的安全问题由于后果严重,正日益受到关注。而对此类问题的研究还十分缺乏。本订阅号的malwarebenchmark网站(malwarebenchmark.org)上公布了Parallel Vulnerability Benchmark V1.0(可下载),这是一个关于并发错误的测试样本集合,其中包含web、数据库等服务器并发错误的测试脚本,有兴趣的欢迎下载研究,并持续关注!

获取无限量星巴克咖啡的方法

另,由于我们是开源项目,以学术交流探讨为主,没有资金支持,因此网站基本的安全措施,以及运维能力还基本依赖个人,欢迎大家关注,但请不要尝试攻击。

获取无限量星巴克咖啡的方法