找回密码
 立即注册
首页 业界区 业界 20250702 - FPC Token 攻击事件:严格的限制,灵活的黑 ...

20250702 - FPC Token 攻击事件:严格的限制,灵活的黑客

呼延冰枫 昨天 20:55
背景

FPC 是 BPE-20 项目,实现了复杂的交易机制,包括买卖手续费、流动性池燃烧机制、限制交易频率、限制交易数量等功能。漏洞产生的原因是当用户卖出代币时,合约会从流动性池中燃烧代币(而非从卖出者余额中燃烧),导致池子中 FPC 代币数量减少,价格抬高。
项目方应该是为了加上流动性池燃烧机制,发现直接加上这不行呀,这个会被利用去套利的。然后打了限制交易频率和限制交易数量两个补丁。希望以此来限制代币持有者通过机制进行获利。
攻击交易

  • 攻击交易哈希: 0x3a9dd216fb6314c013fa8c4f85bfbbe0ed0a73209f54c57c1aab02ba989f5937
  • 攻击者地址: 0xbf6e706d505e81ad1f73bbc0babfe2b414ba3eb3
漏洞合约

  • FPC代币合约: 0xb192d4a737430aa61cea4ce9bfb6432f7d42592f
  • 主要流动性池: 0xa1e08e10eb09857a8c6f2ef6cca297c1a081ed6b
Trace 分析

1.png


  • 攻击者通过闪电贷获得大量的 USDT
  • 在 [FPC, USDT] 池子中购买大量的 FPC
  • 把 FPC 转移到新的地址中
  • 出售所有的 FPC:先触发流动性池燃烧机制,推高了 FPC 的价格,然后再计算出售获得的 USDT,从而获得超额的利润。
    2.png

代码分析

在背景介绍了 FPC 代币实现了流动性池燃烧机制、限制交易频率、限制交易数量等功能,接下来将会通过代码实现以及攻击者的手法向读者展示。
在 [FPC, USDT] 池子中购买大量的 FPC

在黑客购买 FPC 的操作中,黑客没有通过 router 进行兑换,而是直接调用 pool 进行兑换。
  1. CALLCake-LP.swap(**amount0Out=1,000,000,000,000,000,000**, amount1Out=790,178,970,489,172,772,916,652)
复制代码
并且在购买大量 FPC 代币的同时,还换出了 1 USDT。很反常的操作,如果只是为了购买 FPC,这个amount0Out 的值应为为 0。
黑客这样做的目的是为了绕开最大购买数量的限制
在直接通过 pool 大量购买 FPC 时同时换出 1 个 USDT,目的就为了欺骗 _isLiquidity 函数的检查,伪装成移除流动性的操作,使得 isDel 的值为 true。
3.png


如果  isDel 的值为 true,就会绕过 value

相关推荐

您需要登录后才可以回帖 登录 | 立即注册