https://movectf.movebit.xyz/
Git: https://github.com/shanxuanchen/MoveCTF
第一题是check in题,需要用户准备好环境即可。触发合约,然后提交对应的签名即可。
这道题其实稍微有点难~~~~
我们先看一下get flag的条件:
要拿到Treasury Box
随机数要刚好达到0
我们知道其实随机数达到0的概率非常小,其实此时几乎可以确定此题的最大考点:
**随机数攻击**
从slay_boar_king的方法里可以看到,当满足d100 == 0时(随机数的结果为0),sender就可以拿到box资源。当然,我们前提是要能打赢怪物boar。打赢怪物boar纯属就是一个简单的循环逻辑了,只要攻击力和防御力有一定就可以了。
所以,我们需要循环100多次slay_boar。然后积累一定的经验值,然后升级即可。
本题的两个随机数重要变量是:
tx hash
ids_created(这个是object new出来之后的自增ID)
我们采取的攻击方法很简单:
**固定tx Hash,然后模拟随机数的生成,然后遍历ids_created**。
最难的部分是自己手动组装seed,这里直接放答案:
这套我是AC了的。这道题有很大的漏洞,因为create_lend是一个public方法。通过创建一个0债务的新的资源,然后提交flag即可。
这道题其实就是考move的循环题,基本功的题目,两次循环结果就能出来了。