记一道智能合约CTF思路

admin 2021年9月1日18:38:01评论91 views字数 573阅读1分54秒阅读模式

点击蓝字  关注我们

题目源码

记一道智能合约CTF思路

ropsten测试网络地址:https://ropsten.etherscan.io/address/0x63266aaf6bdf3076a02d49eb73ae847cfd0a945c#code

思路解析

记一道智能合约CTF思路

此处有俩个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 里可以改变状态:

记一道智能合约CTF思路

这里分析存在一个矛盾就是,我们不仅要给自己加一个比五大的数,还要让我们的 balance  正好等于五。这里就考虑有可能是整数下溢漏洞,查看其他功能,发现一个转账函数Transfer

记一道智能合约CTF思路

此处存在一个整数下溢增持漏洞,真实案例可以参考:BTCR合约下溢增持漏洞

所以我们先调用 transfer 给随便一个人转钱,把自己的余额下溢出,再调用 deposit 给自己充值 15 块钱,这样就满足了题目的条件。exp:

记一道智能合约CTF思路

记一道智能合约CTF思路

本文始发于微信公众号(IDLab):记一道智能合约CTF思路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年9月1日18:38:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一道智能合约CTF思路https://cn-sec.com/archives/357929.html

发表评论

匿名网友 填写信息