Burger汉堡闪电贷攻击分析

先抛出攻击者地址:
0x6c9f2b95ca3432e5ec5bcd9c19de0636a23a4994
Txn hash交易:
0xac8a739c1f668b13d065d56a03c37a686e0aa1c9339e79fcbc5a2d0a6311e333
根据攻击者的交易可以看到0xae0f538409063e66ff0e382113cb1a051fc069cd这个合约给攻击者钱包转移了不少token。

具体查看0xae0f538409063e66ff0e382113cb1a051fc069cd这个合约到底做了啥:
Contract Address 0xae0f538409063e66ff0e382113cb1a051fc069cd | BscScan
从第一笔token交易记录开始看:
0xac8a739c1f668b13d065d56a03c37a686e0aa1c9339e79fcbc5a2d0a6311e333
Binance Transaction Hash (Txhash) Details | BscScan
我们看到的他利用闪电贷借了6047个bnb,全部换成burger,换出来的burger数量一半送去了0xd0dd735851c1ca61d0324291ccd3959d2153a88d,最后到达了0x7704c4f30c1203cab03d87836932f01a9497d6e9,另一半,他直接池子里swap了bnb回来,大概获得了4478个bnb,然后前面送去0x77类似冻结价格的burger去swap成bnb,也是最终得到了4478个bnb,这样子加起来应该8956个bnb, 最后他还了6062个bnb,在这之前还用491.79个bnb换成了burger。
借款BNB

还款BNB

这次操作后,他就打了10BNB给了攻击者钱包,然后继续下一次攻击。Txn ash:0x40aef37b32748b1eb0e6eff69e2cdb1dbe8f169c8248bf20bf6c29998c1a07da
Binance Transaction Hash (Txhash) Details | BscScan
然后利用同样的方式,一半burger去冻结,一半burger去swap成BNB,然后这之间用部分BNB换成burger,准备下一次的攻击。

由于目前暂时不太熟悉defi的攻击手法,所以接下来引用PeckShield(派盾)的文章进行解释(括号里的是作者自己的理解):
PeckShield「派盾」安全人员快速定位到 BurgerSwap 遭到闪电贷攻击的原因是攻击者利用重入攻击,在智能合约正常启动第二次存入之前,调用 _update()函数,先兑换了 45,453 BURGER。
PeckShield「派盾」简述攻击过程:

第一步,攻击者从 PancakeSwap WBNB-BUSDT 池中借出 6,047.13 WBNB 闪电贷;
第二步,在 BurgerSwap 中,调用函数 DemaxPlatform.swapExactTokensForTokens() 将 6,029 WBNB 兑换为 92,677 BURGER;
第三步,在 BurgerSwap 平台创造假币 BURGER-Fake LP,并增发 100 枚假币和 45,316.6 BURGER;(攻击者创建了一个fake的代币,然后铸币了100枚,接着拿着100枚代币与上诉兑换的burger代币的一半数量形成流动池,然后产生出BURGER-Fake LP的代币)
第四步,将 100 枚假币兑换为 45,316.6 WBNB;
第五步,在此步骤中攻击者通过重入攻击来攻击合约,做了另一笔兑换,将 45,453 BURGER 兑换为 4,478.6 WBNB;
攻击者从上述两步中,共计获得 8,800 WBNB。接着,攻击者将 493 WBNB 在 BurgerSwap 中兑换为 108,700 BURGER,并返还闪电贷完成攻击。
“优秀者模仿 , 伟大者剽窃。”

posted @ 2021-08-31 16:09  ph4nt0mer  阅读(204)  评论(0编辑  收藏  举报