EchoX - We Are What We Eat 合约漏洞解析,就算没有科学家也会被自己捅死

本篇文章目的是想带领大家了解智能合约的运作方式,绝对不是因为我在项目方 dis 提醒合约有问题被踢群愤而写文

江振诚主厨是一位我非常敬佩的人,期望他未来能找到同样等级团队一同合作

吃瓜简介

We Are What We Eat 是一款主打可以吃的 NFT,并和 VR 金奖导演黄心健、国际名厨江振诚、当代表演艺术家张逸君共同合作。

We Are What We Eat 原先规划的总发行量为 250 个,并在 2022.01.10 顺利完成 200 个预售,热门程度让网站一度被瘫痪

而这次的瓜,爆发在 2022.01.11 团队因应公售调整增发量时,输入了错误的合约开启时间,导致被机器人与后续涌入的 fliper 在几分钟内薄荷完,并超发到 450 个,dis 群在暴动后关闭群全频发言


第一个瓜:错误设置合约开启时间

https://etherscan.io/address/0x52afa21bb061bb8a434102802c3d1625a86e9870#code
https://etherscan.io/address/0x52afa21bb061bb8a434102802c3d1625a86e9870#code

这个合约的唯一能用的薄荷功能为 presale,预售时是用这个,公售时也是用这个

在 presale 功能,可以限制特定时间点开放薄荷,若是在特定时间点之前发送的交易则会被退还。到目前为止都很正常,这个功能是没有问题的

有问题的是项目方设置公售开放时间与调整发行量时,设置与预售一模一样的时间戳记,导致交易完成合约即被打开

https://etherscan.io/tx/0xf1a55b20727cbf7ee53bf18425e3cd64987337cc0239ed6e3a2982622c6eae03
https://etherscan.io/tx/0xf1a55b20727cbf7ee53bf18425e3cd64987337cc0239ed6e3a2982622c6eae03
https://etherscan.io/tx/0x719ab9537f6d210f6308f22a0adf7ab78cbce11d93c0526b8f391a754162b2e4
https://etherscan.io/tx/0x719ab9537f6d210f6308f22a0adf7ab78cbce11d93c0526b8f391a754162b2e4

以上的设定都是团队透过 setActivity 功能进行,这个功能可以设定薄荷的价格、开启时间、最大发行量,不小心粗心提早开启合约这事情常有,而被机器人抢薄荷是每天都在发生的事情,大部分的瓜也都会在这边结束

但有意思的事情来了,明明不是说好发 250 个吗?为这么这合约会被薄荷到 450 个,整整超出 200 个呢?

仔细一看,原来这个坑就在看似平常的 setActivity 里


第二个瓜:自己挖的坟墓

https://etherscan.io/address/0x52afa21bb061bb8a434102802c3d1625a86e9870#code
https://etherscan.io/address/0x52afa21bb061bb8a434102802c3d1625a86e9870#code

如同前所说 setActivity 功能可以设定薄荷的价格、开启时间、最大发行量、铸造的合约

但这个功能,在每次设置时,都会把已经计算过的发行量归零

所以在新设置可以薄荷的量为 250 个的时候,原本已经计算过的发行量从 200 被重新设置为 0,可以薄荷的空间又出现了 250 个

bang!!!

也就是今天这个合约,就算没有科学家、就算设置了正确的开启时间,也会被自己捅死

因为如果前端有一点延迟,也会被普通的小白用户疯狂薄荷然后炸掉。光是预售网站就炸掉了,我实在是不敢想像公售的样子

所以基本上这个瓜是项目方自己一手种的,很明显没有认真测试过合约,不是说粗心就完事,不能怪科学家爆你后门,是你自己把后门打开的


那要如何避免这些坑呢?

如果项目方把我解除封锁,我就会分享一下

今天你封锁一个我,还会有千千万万个我,我之后也会尽力找到你们的后门,然后公布给大家

结案!

Subscribe to 0x0b39…29a6
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.