很奇怪,不知道作者有没有发现.按题目给出的提示,应该向合约支付 0.001505000457931604 ether, 文章里是这个值,我算出来也是这个值.但 etherscan 上可以看到成功拿到 flag 的那个人支付的其实是 0.001505457282649604 ether, 这是怎么回事?我实在想不通他那个值是哪来的.
另外,根据 eveemcontract-library 产生的反编译代码,计算 flag 的方式似乎是 msg.value 与 slot[1] 异或(所以才需要支付特定数量的 ether), 因此这道题也许可以不与合约交互就拿到 flag, 只需要用 web3 把 slot[1] 读出来做个异或就行了.