1. SellToken02攻击事件
2023年5月13日,发生在BSC链上的价格操纵攻击
- 攻击合约:bscscan.com
- 攻击交易地址:BNB Smart Chain Transaction Hash (Txhash) Details | BscScan
- phalcon分析结果:0x7d04e953dad4c880ad | Phalcon Explorer (blocksec.com)
(1)phalcon调用序列分析

- 攻击者调用对应攻击合约的0x74ff2dff攻击函数,传入对应的参数
- 先通过DPPOracle调用对应的闪电贷,回调函数中继续调用闪电贷,并且接着调用,调用了三次闪电贷函数,分别在不同的地方借的,借的都是WBNB。
- 进入最后一个回调函数,看看干了些啥

- 看到攻击者先调用
PancakeRouter的交换代币函数,将对应400个WBNB换成对应数量400多万的SellToken代币,并且将闪电贷剩下的WBNB全部转到自己的账上 - Short、balanceOf等函数,查看对应的状态值,应该没啥问题
- 攻击者调用
SellToken: Router v2的ShortStart()函数,用13.37个WBNB去short减少SellTokenrouter中Selltoken的数量,看一下ShortStart()函数的源码:
1 | function ShortStart(address coin,address addr,uint terrace)payable public { |
- 接下来攻击者调用Pancakeswap Router的swapExactETHForTokensSupportingFeeOnTransferTokens()函数去操纵SELLC Token的价格,这里攻击者用大量的SELLC去兑换WBNB,看一下对应的代码
1 | function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) { |
- 这里可以看到,直接通过自动做市商对应的价格攻击计算相应的代币价格,可以兑换更多的WBNB。