点击蓝字 关注我们
题目源码
ropsten测试网络地址:https://ropsten.etherscan.io/address/0x63266aaf6bdf3076a02d49eb73ae847cfd0a945c#code
思路解析
此处有俩个require,第一个require(tx.origin != msg.sender)可以通过合约调用绕过,具体可以参考文章:https://ssr-zjm.github.io/2020/05/04/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%AE%A1%E8%AE%A1-tx.origin%E6%BC%8F%E6%B4%9E.html
第二个可能需要我们先解锁,搜索一下 unlock,发现在 deposit 里可以改变状态:
这里分析存在一个矛盾就是,我们不仅要给自己加一个比五大的数,还要让我们的 balance 正好等于五。这里就考虑有可能是整数下溢漏洞,查看其他功能,发现一个转账函数Transfer
此处存在一个整数下溢增持漏洞,真实案例可以参考:BTCR合约下溢增持漏洞
所以我们先调用 transfer 给随便一个人转钱,把自己的余额下溢出,再调用 deposit 给自己充值 15 块钱,这样就满足了题目的条件。exp:
本文始发于微信公众号(IDLab):记一道智能合约CTF思路
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论