QTN事件 漏洞分析

  • Archime
  • 更新于 2023-01-30 08:37
  • 阅读 2784

1.漏洞简介https://twitter.com/blocksecteam/status/16156258976710041612.相关地址或交易攻击交易:0xfde10ad92566f369b23ed5135289630b7a6453887c77088794552c2a3d1ce8

1. 漏洞简介

https://twitter.com/blocksecteam/status/1615625897671004161

1.png

2. 相关地址或交易

攻击交易: 0xfde10ad92566f369b23ed5135289630b7a6453887c77088794552c2a3d1ce8b7 transfer & skim 0xa806617cdd8ed760ed25cec61abf642f4889749c3cede45c46f27d60f0941bd1 transfer back 0xd78380d1caaf494338d2c5d9093ebee7dcea2a2b804ceb7714dad899bae65be1 sell 攻击合约:0xa33c965ca6d3bdc42bdb23a79081757090eb7700 攻击账号:0x88a2386e7ec97ad1e7a72176a66b6d0711ae3527 被攻击合约:https://etherscan.io/address/0xc9fa8f4cfd11559b50c5c7f6672b9eea2757e1bd#code QUATERNION

3. 获利分析

2.png

4. 攻击过程&漏洞原因

整个攻击分为3个步骤: 1) 第1步:攻击者先将QTN代币转给UNI-V2,再调用池子的skim函数将QTN代币转给事先生成的合约;

3.png

攻击者执行此步骤的目的在于调用函数rebasePlus。在该函数中,_totalSupply的数量不断增大,_gonsPerFragment的值不断减小。攻击者之所以经过UNI-V2转移QTN代币,是因为当from == uniswapV2Pair 时,将调用rebasePlus函数,最终达到缩小_gonsPerFragment 的值的目的。

4.png

5.png 代币合约的balanceOf函数中通过_gonBalances[account].div(_gonsPerFragment) 确认账号所拥有的代币数量,_gonsPerFragment变小,每个账号的代币数量均增加。

6.png 2) 第2步,攻击者调用各攻击者的transferBack函数将代币转给合约0xa33c965ca6d3bdc42bdb23a79081757090eb7700,如合约0x89425431c2971be618658ef8c155e250b1b8b125的QTN代币数量在第1步攻击开始时只有5109705265130400336142756,而在第2步中已经有5788251514335493385465012,代币数量已增加。

7.png

8.png 3) 第3步,攻击者兑换代币,套现离场。

点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Archime
Archime
0x96C4...508C
江湖只有他的大名,没有他的介绍。