20250917 - WETToken 攻击事件:价格操控产生的套利空间

news/2025/9/17 23:11:07/文章来源:https://www.cnblogs.com/ACaiGarden/p/19097865

背景信息

  1. Alert:https://x.com/TenArmorAlert/status/1968223320693686423
  2. TX:https://app.blocksec.com/explorer/tx/bsc/0xf92539acf7eadfd4a98925927a52af5349cb13c2a250908373a5baf8ea4b49ad

Trace 分析

发生攻击的位置在闪电贷的 callback 函数里面,执行完闪电贷后攻击合约将获利的 BUSD 换成 BNB 进行转移。

image

进入到闪电贷的 callback 函数里面,首先进行了一系列的授权,然后就是每 4 个 call 操作为一组,进行了多次重复的操作。

image

  1. Swap:用 5000000 BUSD → 19432567 WET
  2. 0x6a154c56:用 322 WET 换出 2234 WUSD
  3. Swap:用 19432234 WET → 4999040 BUSD
  4. 0xa6ff54ad:用 2234 WUSD 换出 223800 WET

从上面这组操作可以看出,1 和 3 是对等的操作,2 和 4 是不对等的操作。在操作 2 中用 322 WET 换出来的 2234 WUSD 在操作 4 中居然可以换回 223800 WET,这里面产生了获利空间。

image

代码分析

接下来就是继续跟进 0x0A4085F8a587af76936Ac6368DFc161e5C875882 合约,查看 0x6a154c56 和 0xa6ff54ad 两个函数的具体实现逻辑,但是很可惜合约代码并没有开源。

那只能上反编译了。

反编译代码:https://app.dedaub.com/binance/address/0x0a4085f8a587af76936ac6368dfc161e5c875882/decompiled

0x6a154c56 & 0xa6ff54ad

根据 0x6a154c56 函数的反汇编代码大致可以推断出它的功能:

  1. 从 msg.sender 处收取 varg0 数量的 WET
  2. 通过 0x235f 函数,根据 varg0 计算得到 v2
  3. 向 msg.sender 发送 v2 数量的 WUSD

image

继续跟进 0x235f 函数

说实话,很抽象。

可以看出,在 0x235f 函数中通过 _uniswapV2Router.getAmountsOut() 函数来获取对应的 AmountOut 数量。结合在 Trace 分析环节中提到的攻击过程中对 WET 和 BUSD 的币价进行了操控的信息,可以推断出 AmountOut 数量对应的代币是 BUSD 。

也就是说当攻击合约调用 0x6a154c56 函数进行兑换时,会根据已经被操控的 [WET, BUSD] 价格将 WET 兑换成 BUSD。

image

同样,快速过一下 0xa6ff54ad 函数,它的实现就是 0x6a154c56 函数的镜像操作

  1. 从 msg.sender 处收取 varg0 数量的 WUSD
  2. 通过 0xbb9 函数,调用 _uniswapV2Router.getAmountsOut() 根据 [WET, BUSD] 的价格计算 v2
  3. 向 msg.sender 发送 v2 数量的 WET

Rootcause 总结

总的来说,本次攻击事件的 rootcause 就是 0x0A40 合约提供了 [WET, WUSD] 互相兑换的功能,而兑换的比例是通过获取当前 [WET, BUSD] 的价格来决定的。攻击者通过闪电贷获得的大量资金操控 [WET, BUSD] 的价格,从而在 WET 价格高时通过 0x0A40 合约把 WET 换成 WUSD,然后在 WET 价格低时把 WUSD 换成 WET,从而套取超额的 WET 。兑换成 BUSD 归还闪电贷后,再兑换成 BNB 进行资金转移。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

US$18 3 Button Smart Card For Hyundai 433.92MHz

3 Button Smart Card For Hyundai 433.92MHz Package includes:1pc x 3 Button Smart Card For Hyundai 433.92MHz Pictures of 3 Button Smart Card For Hyundai 433.92MHz3 Button Smart Card For Hyundai 433.92MHz…

题解:P6798 「StOI-2」简单的树

简单的树: 题意: 一颗树,每个节点有一个权值 \(c_i\)。 \(val_i\):\(i\) 为根的子树内所有 \(c_i\) 的最大值。 \(f(x,y)\):\(c_{x}\) 改为 \(y\) 后 \(val_i\) 之和。 每次询问给定 \((l,r,a)\) ,求 \(\sum\lim…

题解:P11704 [ROIR 2025] 旅行路线

旅行路线: 很有参考价值的一道题,其他题解有点抽象,我来。 转化题意 题意转化为 \((1,2)→(n-1,m),(2,1)→(n,m-1)\) 的两条链不相交且经过所有关键点的方案数。 其他点没用,我们以下的点指关键点。 无不能相交限制…

题解:P11292 【MX-S6-T4】「KDOI-11」彩灯晚会

彩灯晚会:\(n\) 点 \(m\) 边 \(k\) 种颜色,给每个点染色。 \(cnt_i\):第 \(i\) 种颜色长度为 \(l\) 的链的数量。其中 \(l\) 为题目给的一个常量。 求 \(\sum_{染色方案}\sum_{i=1}^k cnt_i^2\) 的和。一\(\sum_{染…

算法课程第一周作业

《数学之美》第一章启示 《数学之美》的第一章,在算法工程师眼中,并非传授某个具体算法.而是重构了我们理解、设计和应用算法的底层思维框架,世界的基本问题是算法问题,而数学是寻找最优算法的终极语言。 启示一:所有问…

US$7.9 3 Button Remote Key for Chrysler/Jeep 315Mhz

3 Button Remote Key for Chrysler/Jeep 315Mhz GQ43VT13T Package includes:1pc x 3 Button Remote Key for Chrysler/Jeep 315Mhz GQ43VT13T Pictures of 3 Button Remote Key for Chrysler/Jeep 315Mhz3 Button Rem…

vue3 内存溢出临时方法

"serve1":"node --max_old_space_size=8096 node_modules/@vue/cli-service/bin/vue-cli-service.js serve --open","serve2":"node --max_old_space_size=9096 node_modules/@vue…

实测对比:权威榜单之微信排版Top 5编辑器大揭秘

在新媒体运营的世界里,微信排版可是重中之重,它直接影响着文章的视觉效果和读者的阅读体验。很多运营人都有这样的痛点:写作慢、排版耗时、跨平台排版不统一、配图难还可能有侵权风险等。为了帮大家解决这些难题,我…

自建仓库推送到NAS采用 Docker Registry 工作流

放弃手动 `save` 和 `load` 的方式,改用行业标准的 Registry(仓库)模式。这是最专业、最高效的方案。 **优点**: - **彻底解决版本兼容性问题**,因为 push/pull 协议是标准化的。 - 传输效率高,再次推送时只会上…

【汇编和指令集 . 第2025 . 9期】发现大牛

【编者按】在计算机、互联网风行半个世纪之后,我们发现:科技预言家越来越多了,思想家缺位了。生活节奏变快了,思想退步了;书写减少了,纸张缺没少;知识泛滥了,思考没有深入......我们有可能遭AI时代的反噬。时代…

Opencompass避坑日记

安装首先执行pip安装 再下载源代码第一句是为了安装opencompass的依赖包,第二句是为了在当前目录引入本地目录的opencomass模块。 因为有很多修改的地方。 测评VLLM 放弃吧,这个框架对VLLM的支持很差。测评方式:稳定…

随笔 | 农场、小猴子、香蕉

在一个偏西部的农场中,有着一群猴子,他们每天的任务,是将香蕉树上的香蕉摘下来,而他们的报酬是仅仅九根香蕉,每天早上四根,每天晚上五根。某一天,其中一只猴子报怨,每天早上只能吃到四根香蕉,他提议说,改成每…

Day17数组的使用

package com.cc.array;public class ArrayDemo4 {public static void main(String[] args) {int [] arrays = {1,2,3,4,5};//jdk1.5之后的版本可以通果增强for寻循环来遍历数组或集合中的每一个元素//缺点在于没有下标…

US$17 4+1 Button Smart Card for chrysler/Dodge

4+1 Button smart card for chrysler/Dodge Package includes:1pc x 4+1 Button smart card for chrysler/Dodge Pictures of 4+1 Button Smart Card for chrysler/Dodge4+1 Button Smart Card for chrysler/Dodge, no…

完整教程:缓存与数据库一致性的4大坑及终极解决方案

完整教程:缓存与数据库一致性的4大坑及终极解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

Rust的Cargo用法详解 - 详解

Rust的Cargo用法详解 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

串行通信接口标准(TTL、CMOS、RS232、RS422、RS485、CAN等)

TTL电平 引言 TTL是 Transistor-Transistor Logic(晶体管-晶体管逻辑)的缩写,是早期基于双极性晶体管(BJT)技术的逻辑家族。 电平特点 1. 电源电压:+5V 2. 电平标准:Voh:≥ 2.4V; Vol: ≤ 0.4V; Vih:≥ 2.0…

攻防世界-IgniteMe - xxx

先查壳,发现没加壳,拖入ida-32反汇编了得到主函数 粗略看一下,能得到的信息有 输入的字符串长度为29,前四个字符是EIS{,最后一个字符是}想要输出Congratulations!关键的函数就是这个 4011C0函数,我们点进去看一下…

详细介绍:芯伯乐零漂移轨到轨运放芯片XBL8551/XBL8552/XBL8554系列,微安级功耗高精度信号处理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C 语言 之 面向对象(一)

C 语言 之 面向对象(一)C 语言 之 面向对象(一) 了解C语言面向对象之前首先需要对C语言的指针、结构体有基本了解。 指针 正常使用数组: void hello(){#define count 10// shint a[count] = {1, 2, 3, 4, 5, 6, 7…