0x1 原题
挑战1:Web
题名: Crypto Exchange Bug
奖励:2 Ether(≈2900¥)
地址:http://dvpgame.ml/

0x2 解题思路
1、登陆
随便输入个账号就能登录,这里用asd:asd登录,发现初始有95dollar可用。
2、猜想
走一遍系统的各个功能点,猜测可能出现漏洞的地方。 经过一番尝试后,觉察参数中的值0.95和系统中1.9的值有某种联系,猜测可能存在条件竞争。
3、测试
1.条件竞争
各个功能中只有提现功能和购买DVP功能互相存在条件竞争。 burp抓取提现的数据包和购买DVP的数据包,同时请求,一段尝试后即可触发漏洞。成功使余额变为190dollar,190doller可以兑换1.9dvp,但是eth购买条件是需要大于1.9dvp。
2.浮点运算溢出
一番尝试后猜测此处或许可以通过浮点运算溢出绕过, 如(1.8+0.1)>1.9 ,如图:

分别进行两次购买,第一次购买1.8dvp,第二次0.1dvp。成功绕过。
0x3 证明
1、提现数据包

2、购买DVP的数据包

3、触发条件竞争漏洞

4、触发浮点运算溢出漏洞
分两次购买dvp,先购买0.1个DVP,再购买1.8个DVP,此时我账户下的DVP数应该溢出为1.9000000000000001了,大于1.9,成功购买ETH。

5、购买key

可以看到打印出来的字符串是base64后的,解码一下就是真实的私钥了,然后把私钥导入钱包即可转账走人。
本文详细解析了CryptoExchangeBug挑战中的两个关键漏洞:条件竞争和浮点运算溢出。通过登录系统并测试不同功能,作者发现了利用这两个漏洞的方法,成功获得了额外的资金并绕过了交易限制。

被折叠的 条评论
为什么被折叠?



