此次攻击主要是在代币在转帐时没考虑到tax可能被收取两次的情况导致代币增发造成的
攻击者地址:0x67a909f2953fb1138bea4b60894b51291d2d0795
攻击合约地址:0x1FAe46B350C4A5F5C397Dbf25Ad042D3b9a5cb07
攻击tx:0x6759db55a4edec4f6bedb5691fc42cf024be3a1a534ddcc7edd471ef205d4047
通过blocksec的phalcon工具来分析攻击的tx
1.从dodo中借出1400 WBNB
2.将1000 WBNB换成10865 BRA
攻击合约收到10539 BRA,325 BRA发送回LP合约
查看下BRA的transfer方法,满足一定条件会有个tax
分别为转帐数量的3%
在这里是满足了sender==uniswapV2Pair&&!recipientAllow
recipientAllow的值为:
bool recipientAllow = ConfigBRA(BRA).isAllow(recipient);
3.将10539 BRA转到LP地址
4.调用skim()方法,to地址设置为LP地址
将多出来的10539 BRA再次发送到BRA-USDT的LP地址,LP地址共收到了10855 BRA
这是因为_tansfer函数中两个if都被满足,导致tax收了两次,导致增发
5.重复调用skim()增发BRA
6.调用swap方法,将增发的BRA换成USDT
7.将USDT换成WBNB,归还闪电贷
此次攻击主要是在代币在转帐时没考虑到tax可能被收取两次的情况导致代币增发造成的。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!