记一道智能合约CTF思路

  • A+
所属分类:CTF专场

点击蓝字  关注我们

题目源码

记一道智能合约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思路

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: