实战 | 记一次赏金5万美金加密货币的漏洞挖掘记录
2022-10-5 12:48:28 Author: HACK学习君(查看原文) 阅读量:17 收藏

加密货币现货和期货交易之间的差异

许多加密货币交易所为其用户提供不同类型的钱包。每种钱包类型都用于特定的活动,例如现货交易、期货交易、资金、礼物等。利用本文中的漏洞非常重要的一点就是了解现货和期货交易。这是因为将资金从一种钱包类型转移到另一种时,就有机会挖掘到漏洞。

现货交易

现货交易是比特币或以太坊等加密货币的经典买卖。你设定价格来购买或出售你的代币,交易所将你与买家或卖家相匹配。

例如,您想以市场价格购买 BTC。你下订单,交易所立即从另一位交易者那里卖给你 BTC。

期货交易

期货交易是关于买卖特定合约。这些合约代表以特定价格购买或出售代币的交易。

例如,假设您购买了比特币期货合约。合同规定,从现在起 6 个月你将以 20,000 美元的价格购买 BTC。如果 BTC 在 6 个月涨到 40 000 美元,您可以使用期货合约以 50% 的折扣购买 BTC!或者,如果价格降到达到 10 000 美元,您将在交易中失败,因为您需要为 1 个比特币支付两倍的价格。

请注意,拥有期货合约意味着仅拥有合约,而不是文档中提到的数字资产。

漏洞教程:交易所钱包转账

当您在现货和期货钱包之间转移资金时会出现此错误。基本上,您可以以一种错误地舍入数字的方式弄乱转账金额。如果你调整得当,你可以无限制地增加资产的数量。

第 1 步 – 通过 Burp Suite 请求启动数据传输

获取余额超过 0 美元的任何现货或期货钱包。然后,通过使用 Burp Suite 处理请求来启动数据传输。在我们的示例中,我们将使用 1 USDT:

然后将其发送到重放功能模块进行进一步测试。

第 2 步 - 编辑金额

尝试编辑“金额”并检查服务器响应:

如果服务器状态为 200,则一切正常:

您会注意到可以使用小于系统默认值(小数点后十个符号)的金额进行转账。

这是因为四舍五入的问题。十进制数包含不超过 10 位数字。任何低于 0,000000005 的数字都低于最低要求。因此,它将四舍五入到最接近的可用数字。

当您发送带有操纵数字的请求时,两个钱包都会执行不同的舍入逻辑:

  • 您从中发送资金的钱包认为金额为 0。因此,没有转账。
  • 您发送资金的钱包认为金额大于 0,因此添加金额。

在这种情况下,服务器首先检查“来自”钱包的余额。

当钱包分析他们发送和接收的金额时,他们对负数和正数的看法不同:

  • 出现负数是因为我们从钱包中取出了这个金额。它将金额向下舍入为 0。
  • 出现正数是因为我们将金额添加到钱包中。它跳过舍入并添加金额。

只要小数点后的数字超过 9 个,“发件人”钱包就会不断将数字四舍五入为 0:

第 3 步——最大化影响

要自动执行此漏洞利用,您可以在 Burp Intruder 中设置空负载攻击。不要太快发送请求,因为交易所的 WAF 可以检测到它们。一旦找到发送请求的正确速度,您就可以计算提取一美元需要多少时间。

此漏洞适用于任何交易所加密货币,甚至 BTC。因此,您可以通过使用比特币进行渗透测试来最大化影响。

如何改进错误报告

当攻击者在钱包中积累了足够的资金时,他们可以从交易所提取资金。在这种情况下,交易所的热钱包必须转移资金。如果恶意行为者自动执行此漏洞利用,他们可以耗尽交易所的钱包。

为了增加此错误报告的严重性,我们建议做两件事:

  • 使用 BTC 测试此漏洞
  • 使用 Burp Intruder 自动化漏洞利用以更快地积累代币


推荐阅读

实战 | 记一次渗透拿下某儿童色情网站的经过

实战 | 某某街一处XSS的绕过思路

实战 | 记一次企业钓鱼演练

2022年,从现在开始学安全还不迟!

干货 | 2022年超全的安全知识库

实战 | 实战一次完整的BC网站渗透测试

来源:利刃信安

如有侵权,请联系删除

星球部分精华内容推荐

其他更多精彩内容,欢迎加入我们的星球


文章来源: http://mp.weixin.qq.com/s?__biz=MzIzNzMxMDkxNw==&mid=2247490538&idx=1&sn=36864e05c1689d5aa4cd8cd8bd114d3e&chksm=e8cbdd40dfbc54569e415cfa56fccc3de250c16edda7fc9c8f8b3bb92ac564af0236fbba6ecc#rd
如有侵权请联系:admin#unsafe.sh