LockedDeal整数溢出 漏洞分析

  • Archime
  • 更新于 2023-03-15 16:26
  • 阅读 2851

1. 相关地址或交易

攻击交易: https://phalcon.xyz/tx/bsc/0x39718b03ae346dfe0210b1057cf9f0c378d9ab943512264f06249ae14030c5d5 攻击合约:0x058bae36467a9fc5e1045dbdffc2fd65b91c2203 攻击账号:0x190cd736f5825ff0ae0141b5c9cb7fcd042cef2a 被攻击合约:LockedDeal 0x8bfaa473a899439d8e07bf86a8c6ce5de42fe54b

2. 获利分析

1.png

3. 攻击过程&漏洞原因

查看攻击交易过程,发现攻击者调用LockedDeal 合约的WithdrawToken 方法将MNZ、WOD、SIP、ECIO等代币转移至攻击合约:

2.png 需要注意在调用WithdrawToken方法时传递的参数为PoolId = 158971,而这个参数正是攻击合约在上一步调用CreateMassPools方法时新建池子的返回值:

3.png 继续查看在 CreateMassPools 方法的实现,发现LockedDeal 合约会调用getArraySum 方法将调用者的_Token转移至LockedDeal合约后,再创建包含指定数量的代币的池子:

4.png 再看getArraySum方法的实现,sum = sum + _array[i]; 代码存在整数溢出的风险,而编译器版本为 pragma solidity ^0.6.0;

5.png 查看攻击合约输入的两个整数 _StartAmount [] 115792089237316195423570985008687907853269984665640502182660492372007802789937 + 61856797091635905326850000 = 1 (整数溢出)

6.png

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

0 条评论

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