shaneson.eth

Posted on Nov 10, 2022Read on Mirror.xyz

Sui MoveCTF 攻防

官网

https://movectf.movebit.xyz/

Git: https://github.com/shanxuanchen/MoveCTF

题目1

第一题是check in题,需要用户准备好环境即可。触发合约,然后提交对应的签名即可。

题目2

这道题其实稍微有点难~~~~

我们先看一下get flag的条件:

  1. 要拿到Treasury Box

  2. 随机数要刚好达到0

我们知道其实随机数达到0的概率非常小,其实此时几乎可以确定此题的最大考点:

**随机数攻击**

get flag

1. 拿到Treasure Box

从slay_boar_king的方法里可以看到,当满足d100 == 0时(随机数的结果为0),sender就可以拿到box资源。当然,我们前提是要能打赢怪物boar。打赢怪物boar纯属就是一个简单的循环逻辑了,只要攻击力和防御力有一定就可以了。

所以,我们需要循环100多次slay_boar。然后积累一定的经验值,然后升级即可。

2. 随机数要刚好达到0

本题的两个随机数重要变量是:

  1. tx hash

  2. ids_created(这个是object new出来之后的自增ID)

我们采取的攻击方法很简单:

**固定tx Hash,然后模拟随机数的生成,然后遍历ids_created**。

next zero rand u64 range

最难的部分是自己手动组装seed,这里直接放答案:

题目3

这套我是AC了的。这道题有很大的漏洞,因为create_lend是一个public方法。通过创建一个0债务的新的资源,然后提交flag即可。

题目4

这道题其实就是考move的循环题,基本功的题目,两次循环结果就能出来了。

参考链接:

https://mp.weixin.qq.com/s/-OFe_E_XTzdRgBB0ilu9aw

sui