Degen Disco is where degens disco.
Degen Disco is where degens disco.

Subscribe to degendisco.eth

Subscribe to degendisco.eth
Share Dialog
Share Dialog


前几天有个NFT项目方犯了个非常低级的错误,导致项目合约直接成了提款机。后续的提款竞争过程也非常精彩,涉及到PGAs, Flashbots和Frontrunning。
最早是由@bertcmiller曝出的这个合约漏洞,但在曝光之后,竟然又发生一次,匪夷所思。下文是对这个事件的推测及还原。
https://twitter.com/bertcmiller/status/1544496577338826752?s=20&t=mBGED1J-GvWdrcMSJOXR5A
产生漏洞的合约来自NFT项目方FlippazOne,这是一个NFT项目,采用限时竞拍模式出售。
https://etherscan.io/address/0xE85A08Cf316F695eBE7c13736C8Cc38a7Cc3e944
在合约中,有一个ownerWithdrawAllTo()的方法,能讲合约中的所有余额转至指定地址。有这样的方法不奇怪,因为项目方总得要回笼资金。但在这么重要的一个方法中,合约编写者犯了个低级错误,并没有限定调用者的权限如onlyOwner。于是所有人都能调用,合约妥妥成了提款机。
搞笑的是,这个方法还叫ownerWithDrawAllTo,起名的时候真考虑到了。

这个时候可能有个很勤奋的人坐在屏幕前默默阅读每个新部署的合约,突然发现了这个漏洞,于是乎静静等待有人往里打钱。
终于有人在block 15083765给合约打了1.15 ETH来竞拍NFT。

https://etherscan.io/tx/0xf797ef269080f03c9dea6e99199cdb0477b6e9b20850e579d2b74a9e3e2a29a4
这个时候屏幕前的勤奋人来劲了,拿到这1.15ETH岂不是如同探囊取物一般容易。于是他没多想,直接通过etherscan上的合约窗口来调用这个ownerWithDrawAllTo()方法,弹出MetaMask提示,使用默认gas,几秒便操作完了,静等1.15ETH到账。

https://etherscan.io/tx/0x1adfd037aeb717607ae6d480f6694380daad9fcd4686a63be3fd29778e8ca412
这时他没想到的是,链上的抢跑机器人已经盯上了他在mempool中的未确认交易,在一番模拟后发现这个交易有利可图,便迅速复制交易内容,提高gas费,半路打劫。

https://etherscan.io/tx/0x8bded20c1db5a1d5f595b15e682a95ce11d3c895d6031147fa49c4ffa5729a30
这时另一个高手出现了。为什么说他是高手,因为这个地址是0x0000打头,一看就是高手,在省gas这一块气质拿捏地死死的。
跟上一个抢跑机器人操作一样,它在mempool中发现这笔交易有理可图,迅速复制粘贴了交易细节。但不同的地方在于,它通过Flashbots直接发送交易。而Flashbots的bundles确保会在所有其他交易前被矿工打包,所以这个0x0000的交易就比之前单纯提高gas的机器人更先一步执行完成,成功拿到1.15ETH利润。

https://etherscan.io/tx/0x670da209fb1168941c4565a9a86f87d1011b24b857ea64f658b126a43f031fa0
精彩的螳螂捕蝉,黄雀在后,黄雀在黄雀后的表演结束了。不得不感叹,以太坊真的是一个黑暗森林,你都不知道最后开枪的是谁,需要小心翼翼,做好安全防护。
后来没想到又有人打了4ETH进到这个合约里。当然,这个时候这个漏洞已经被曝光了,10分钟之后就有人转走了这笔钱。

当然,现在这个竞拍已经结束,没有办法再从里面提款。这个合约也被写入了经典的漏洞案例中,供后人观摩。
前几天有个NFT项目方犯了个非常低级的错误,导致项目合约直接成了提款机。后续的提款竞争过程也非常精彩,涉及到PGAs, Flashbots和Frontrunning。
最早是由@bertcmiller曝出的这个合约漏洞,但在曝光之后,竟然又发生一次,匪夷所思。下文是对这个事件的推测及还原。
https://twitter.com/bertcmiller/status/1544496577338826752?s=20&t=mBGED1J-GvWdrcMSJOXR5A
产生漏洞的合约来自NFT项目方FlippazOne,这是一个NFT项目,采用限时竞拍模式出售。
https://etherscan.io/address/0xE85A08Cf316F695eBE7c13736C8Cc38a7Cc3e944
在合约中,有一个ownerWithdrawAllTo()的方法,能讲合约中的所有余额转至指定地址。有这样的方法不奇怪,因为项目方总得要回笼资金。但在这么重要的一个方法中,合约编写者犯了个低级错误,并没有限定调用者的权限如onlyOwner。于是所有人都能调用,合约妥妥成了提款机。
搞笑的是,这个方法还叫ownerWithDrawAllTo,起名的时候真考虑到了。

这个时候可能有个很勤奋的人坐在屏幕前默默阅读每个新部署的合约,突然发现了这个漏洞,于是乎静静等待有人往里打钱。
终于有人在block 15083765给合约打了1.15 ETH来竞拍NFT。

https://etherscan.io/tx/0xf797ef269080f03c9dea6e99199cdb0477b6e9b20850e579d2b74a9e3e2a29a4
这个时候屏幕前的勤奋人来劲了,拿到这1.15ETH岂不是如同探囊取物一般容易。于是他没多想,直接通过etherscan上的合约窗口来调用这个ownerWithDrawAllTo()方法,弹出MetaMask提示,使用默认gas,几秒便操作完了,静等1.15ETH到账。

https://etherscan.io/tx/0x1adfd037aeb717607ae6d480f6694380daad9fcd4686a63be3fd29778e8ca412
这时他没想到的是,链上的抢跑机器人已经盯上了他在mempool中的未确认交易,在一番模拟后发现这个交易有利可图,便迅速复制交易内容,提高gas费,半路打劫。

https://etherscan.io/tx/0x8bded20c1db5a1d5f595b15e682a95ce11d3c895d6031147fa49c4ffa5729a30
这时另一个高手出现了。为什么说他是高手,因为这个地址是0x0000打头,一看就是高手,在省gas这一块气质拿捏地死死的。
跟上一个抢跑机器人操作一样,它在mempool中发现这笔交易有理可图,迅速复制粘贴了交易细节。但不同的地方在于,它通过Flashbots直接发送交易。而Flashbots的bundles确保会在所有其他交易前被矿工打包,所以这个0x0000的交易就比之前单纯提高gas的机器人更先一步执行完成,成功拿到1.15ETH利润。

https://etherscan.io/tx/0x670da209fb1168941c4565a9a86f87d1011b24b857ea64f658b126a43f031fa0
精彩的螳螂捕蝉,黄雀在后,黄雀在黄雀后的表演结束了。不得不感叹,以太坊真的是一个黑暗森林,你都不知道最后开枪的是谁,需要小心翼翼,做好安全防护。
后来没想到又有人打了4ETH进到这个合约里。当然,这个时候这个漏洞已经被曝光了,10分钟之后就有人转走了这笔钱。

当然,现在这个竞拍已经结束,没有办法再从里面提款。这个合约也被写入了经典的漏洞案例中,供后人观摩。
<100 subscribers
<100 subscribers
No activity yet