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

智能合约安全 | 合约无效化攻击

目录:

智能合约安全

   合约无效化攻击

   合约自毁函数 selfdestruct

   攻击实现

   漏洞防御

   总结

智能合约安全

合约无效化攻击

合约无效化攻击类同于web安全中的逻辑漏洞中的一种 我们这里拿一个典型的例子来讲解 有这样一份智能合约, 每个人可以向其中发送1 eth 第七个发送的人可以获取全部的7 eth 我们按照这个功能去编写代码​​​​​​​

​​contract Games { function play() public payable { require(msg.value == 1 ether); if (address(this).balance == 7 * 10 ** 18) { // 当此人发送的是本轮中第七次eth, 则获得全部奖励 msg.sender.call{value:7 ether}(""); } }}

阅读代码, 乍一看好像没什么问题 require保证了每人每次只能发送1eth 功能也可以正常实现

合约自毁函数 selfdestruct

接下来就要引入一个关于 合约自毁 的概念:合约部署之后, 假设我们发现了bug, 需要更改,智能合约不像传统的服务器那样, 传统的服务器可以直接关停服务,甚至热更新(在不停止服务的情况下更改服务器代码),在区块链上的代码我们是无法更改的。那么假设我们的某个服务存在类似于”支付漏洞”的漏洞,我们必须要停止掉这个智能合约,这时候就需要用到合约自毁函数,函数签名 selfdestruct(address payable); 该函数接收一个可支付地址作为参数,函数会销毁该智能合约的部署,并将此时合约中存在的余额强制转给指定的地址

攻击实现

那么这个漏洞就很清楚了 只需要我们部署一个智能合约 并使用自毁函数强制转账 8 eth 给上述合约 由于上述合约中的 if(address(this.balance == 7 ether)), 这个条件永远不会被满足 该合约也就失去了作用

攻击代码如下​​​​​​​

contract Attack { function draw() public payable {} // 用来存eth, 方便测试 function over(address addr) public { selfdestruct(payable(addr)); }}

先转账8eth到攻击合约中

图片

然后在将目标合约的地址传给over函数调用

图片

可以看到目标合约中的eth已经变成了8 这时候无论怎样向该合约传入eth 都已经无效了


漏洞防御

作为一名攻击者, 可能会觉得这种类型的攻击可能有些”鸡肋” 换一个角度, 如果你作为一名开发者, 一定是不希望这种事情的发生的 防御的话, 我们可以专门设置一个值, 只有在每次函数被调用时 才会增加, 判断的依据也使用这个值来判断​​​​​​​

contract Games { uint blance = 0; function play() public payable { require(msg.value == 1 ether); blance += 1; if (blance == 7) { // 当此人发送的是本轮中第七次eth, 则获得全部奖励 msg.sender.call{value:7 ether}(""); } }}

总结

本篇主要引入 自毁函数 在攻击上的一些可能点, 其核心还是代码逻辑漏洞, 另外, 本篇中的漏洞代码也可以使用回滚攻击去”耍赖”, 感兴趣的同学可以自行尝试.

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关     

相关文章:

智能合约安全 | 合约无效化攻击

目录: 智能合约安全 合约无效化攻击 合约自毁函数 selfdestruct 攻击实现 漏洞防御 总结 智能合约安全 合约无效化攻击 合约无效化攻击类同于web安全中的逻辑漏洞中的一种 我们这里拿一个典型的例子来讲解 有这样一份智能合约, 每个人可以向其中发送1 eth 第七个…...

20250226-代码笔记05-class CVRP_Decoder

文章目录 前言一、class CVRP_Decoder(nn.Module):__init__(self, **model_params)函数功能函数代码 二、class CVRP_Decoder(nn.Module):set_kv(self, encoded_nodes)函数功能函数代码 三、class CVRP_Decoder(nn.Module):set_q1(self, encoded_q1)函数功能函数代码 四、class…...

【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)

本文项目编号 T 222 ,文末自助获取源码 \color{red}{T222,文末自助获取源码} T222,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

【LeetCode: SQL专题 : SQL132 每个题目和每份试卷被作答的人数和次数 + 合并查询】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

【软考-架构】1.2、指令系统-存储系统-cache

GitHub地址:https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 指令系统 计算机指令执行过程:取指令一一分析指令一一执行指令三个步骤,首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据…...

Uniapp开发微信小程序插件的一些心得

一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...

C++-第十八章:线程相关内容

目录 第一节:thread的主要内容 1-1.创建子线程 1-2.回收子线程 1-3.获得子线程的id 1-4.获得当前线程id 1-5.子线程传引用 1-6.线程的先创建后使用 第二节:mutex的主要内容 2-1.mutex的作用 2-2.智能锁 第三节:condition_variable的主要内…...

纯函数(Pure Function)概念

纯函数(Pure Function)概念 纯函数是函数式编程中的核心概念,满足以下两个条件: 确定性:相同的输入 永远得到相同的输出,不依赖外部状态或随机性。 无副作用:不会修改外部变量、参数、I/O设备或…...

【网络安全】敏感字段扫描工具(可用于漏洞挖掘、代码审计)

原创文章,禁止转载。 读者可对脚本进行二次创作,以适配个人需求。 文章目录 ScanSensitiveInfo.py效果图ScanSensitiveInfo.py 该脚本用于扫描敏感字段、代码中可能引入的第三方JS链接/服务以及可能涉及信息泄露的请求方法。 1、脚本采用单线程处理,避免多线程导致的混行问…...

介绍下pdf打印工具类 JasperPrint

JasperPrint 工具类深度解析 JasperPrint 是 JasperReports 框架中实现 PDF 打印的核心载体类,其本质是 填充数据后的可打印报表对象,承担着从模板编译、数据填充到格式输出的全流程控制。以下从 7 个维度展开深度解析: 一、核心定位与生命周…...

Deepseek Api Function Calling解析(tools、tool_calls)Deepseek函数调用流程图、Python代码示例

文章目录 Function Calling介绍**核心原理**1. **动态扩展模型能力**2. **JSON结构化交互** **实现步骤**(以支持Function Calling的模型为例)1. **定义可用函数**2. **模型匹配与生成**3. **开发者执行函数**4. **结果反馈给模型** **DeepSeek R1的当前…...

分享一套适合做课设的SpringBoot商城系统

开学季到了,不少同学都进入了学习的状态中去了,趁着今天有空来分享一套商城系统,这套代码实现了商城的前后台,整体界面和代码非常简洁,熟悉项目之后可以根据需求进行二次开发,也适合用来做毕设、课设&#…...

C语言自定义类型:联合和枚举

在C语言中,联合(Union)和枚举(Enum)是两种重要的的自定义数据类型。它们分别适用于不同的场景,能够提升代码的效率和可维护性。。本文将结合代码示例,详细讲解它们的声明、特点及使用方法。 一、…...

Redis SCAN 命令详解:安全遍历海量键的利器

一、SCAN 命令的核心价值 Redis 的 KEYS * 命令虽然可以遍历所有键,但在生产环境中直接使用可能导致服务阻塞(时间复杂度 O(n))。SCAN 命令通过游标分批次迭代,实现非阻塞式遍历,成为处理百万级键的安全选择。 二、命…...

文字滚动效果组件和按钮组件

今天和大家分享一个vue中好用的组件,是我自己写的,大家也可以自己改,就是文字的循环滚动效果,如下图,文字会向左移动,结束之后也会有一个循环,还有一个按钮组件,基本框架写的差不多了…...

Sqlserver安全篇之_TLS的证书概念

证书的理解 参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?viewsql-server-ver16 TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/…...

VS Code 如何搭建CC++开发环境

VS Code 如何搭建C/C开发环境 文章目录 VS Code 如何搭建C/C开发环境1. VS Code是什么2. VS Code的下载和安装2.1 下载和安装2.2 环境的介绍 3. VS Code配置C/C开发环境3.1 下载和配置MinGW-w64编译器套件3.2 安装C/C插件3.3 重启VS Code 4. 在VS Code上编写C语言代码并编译成功…...

计算机网络之传输层(传输层的功能)

一、数据分段与重组 传输层从会话层接收数据,并将其分割成较小的数据段,以适应网络层的最大传输单元(MTU)限制。在目的端,传输层负责将这些数据段重新组合成原始数据,确保数据的完整性和正确性。 二、端口…...

中科大计算机网络原理 1.5 Internt结构和ISP

一、互联网的层次化架构 ‌覆盖范围分层‌ ‌主干网(Tier-1级)‌ 国家级或行业级核心网络,承担跨区域数据传输和全球互联功能。例如中国的四大主干网(ChinaNET、CERNET等)以及跨国运营商(如AT&T、Deuts…...

【网络安全 | 渗透工具】小程序反编译分析源码 | 图文教程

未经许可,禁止转载。 本文仅供学习使用,严禁用于非法渗透测试,笔者不承担任何责任。 文章目录 1、下载Proxifier2、下载反编译工具unveilr3、寻找小程序文件包4、对文件包进行反编译5、对源码进行分析6、渗透思路6.1、查找敏感信息泄露6.2、解析加解密逻辑6.3、枚举 API 接口…...

在鸿蒙HarmonyOS手机上安装hap应用

一、下载工具 安装hap包需要用到小工具 。 二、解压到目录后,进入该文件夹,打开命令行,如下图 三、将下载好的hap包放入刚才解压的文件夹内(假设hap包文件名为app.hap) 四、连接好手机和电脑,手机需要打…...

SQLAlchemy系列教程:SQLAlchemy快速入门示例项目

SQLAlchemy是与数据库交互的Python开发人员不可或缺的库。这个强大的ORM允许使用python结构进行简单的数据库操作。设置过程很简单,并且允许可扩展的数据库应用程序开发。本文通过入门项目完整介绍SQLAlchemy的应用过程,包括安装依赖包,创建连…...

【大模型系列篇】DeepSeek开源周,解锁AI黑科技

🔥 Day1:FlashMLA —— GPU推理加速器 专为处理长短不一的AI推理请求而生,就像给Hopper GPU装上了智能导航,让数据在芯片上跑出3000GB/s的"磁悬浮"速度。✅ 已支持BF16格式|580万亿次浮点运算/秒FlashMLA G…...

【Java 基础(人话版)】Java SE vs Java EE

Java SE vs Java EE:有什么区别? 最近在学习 Java 的时候,总是会看到 Java SE 和 Java EE 这两个概念。刚开始有点迷糊,后来查了资料、做了一些实验,终于弄清楚了它们的区别。这里记录一下,希望对以后复习…...

Nmap使用指南

Nmap使用指南 Nmap (网络映射器) 是一款强大的应用网络扫描和安全核查工具,适合于网络管理和安全专家。本文将介绍Nmap的基本使用方法,包括基本命令和常用功能。 1. 基本使用方式 Nmap的基本命令格式如下: nmap [选项] 目标地址目标地址 可…...

C#-委托

Action 无返回值&#xff0c;多线程常用 Action<string> action1 (name) > Console.WriteLine($"hello {name}"); action1("tom"); Func 有返回值&#xff0c;扩展方法常用&#xff0c;最后一个参数是输出参数 Func<int, int, double>…...

Qt中如果槽函数运行时间久,避免阻塞主线程的做法

Qt中如果槽函数运行时间久&#xff0c;避免阻塞主线程的做法 一、解决步骤 创建一个工作线程类&#xff1a;继承自QObject&#xff0c;并在其中实现槽函数的逻辑。将工作线程类的实例移动到单独的线程中&#xff1a;通过moveToThread()方法将对象移动到新线程。启动线程&…...

SQLark 数据迁移|断点续迁已上线(Oracle-达梦)

数据迁移是 SQLark 最受企业和个人用户欢迎的功能之一&#xff0c;截止目前已帮助政府、金融、能源、通信等 50 家单位完成从 Oracle、MySQL 到达梦的全量迁移&#xff0c;自动化迁移成功率达 96% 以上。 在 Oracle 到达梦数据库迁移过程中&#xff0c;SQLark V3.3 新增 断点续…...

【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元

第七届人文教育与社会科学国际学术会议&#xff08;ICHESS 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;https://ais.cn/u/nuyAF3 目录 一、Spring Boot简介 1.1 Spring Boot的诞生背景 1.2 Spring Boot的核心特性 二、搭建开发环境 2.1…...

【Multipath网络层协议】MPTCP工作原理

常见网络层多路径协议介绍 MPTCP&#xff08;Multipath TCP&#xff09; MPTCP 是在传统 TCP 基础上进行扩展的协议&#xff0c;它允许在源端和目的端之间建立多个 TCP子流&#xff0c;这些子流可以通过不同的网络路径传输数据。 例如&#xff0c;一台笔记本电脑同时连接了 W…...

【网络安全】从NA到P1,我是如何扩大思路的?

未经许可,不得转载。 本文涉及漏洞均已修复。 文章目录 正文正文 在这篇文章中,我将向大家展示一个我发现的漏洞,该漏洞利用了一个硬编码的 Basic 认证头,获取了管理员权限。 首先,假设公司域名为“target.com”。 第一步是使用多种工具(如 Amass、subfinder、findoma…...

使用 Postman 访问 Keycloak 端点

1. 引言 在本教程中&#xff0c;我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后&#xff0c;我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。 2. OAuth 2.0 OAuth 2.0 是一个授权框架&#xff0c;它允许经过身份验证的用户通过令牌向第三方授予访问…...

[AI机器人] Web-AI-Robot机器人前瞻版--比奇堡海之霸凯伦

文章目录 简述开源Web-AI-Robot 项目-比奇堡-海之霸-凯伦 技术架构效果预览 简述 本项目配合前端项目bikini_bottom_karen_ui运行&#xff0c;来源于柒杉工作室&#xff08;截止2025.2&#xff0c;目前我自己&#xff09;。 打造一个只需要在浏览器上运行的AI智能机器人&#…...

FastAPI 学习笔记

简介&#xff1a; FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Python 并基于标准的 Python 类型提示。 关键特性: 快速&#xff1a;可与 NodeJS 和 Go 并肩的极高性能&#xff08;归功于 Starlette 和 Pydantic&…...

CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。

CineMaster是一种 3D 感知且可控的文本到视频生成方法允许用户在 3D 空间中联合操纵物体和相机&#xff0c;以创作高质量的电影视频。 相关链接 论文&#xff1a;cinemaster-dev.github.io 论文介绍 CineMaster是一种用于 3D 感知和可控文本到视频生成的新型框架。目标是让用…...

Linux上用C++和GCC开发程序实现两个不同PostgreSQL实例下单个数据库中多个Schema稳定高效的数据迁移到其它PostgreSQL实例

设计一个在Linux上运行的GCC C程序&#xff0c;同时连接三个不同的PostgreSQL实例&#xff0c;其中两个实例中分别有两个数据库中多个Schema的表结构分别与第三实例中两个数据库中多个Schema个结构完全相同&#xff0c;同时复制两个实例中两个数据库中多个Schema里的所有表的数…...

【Qt】ffmpeg照片提取、视频播放▲

目录 一、图像的成像原理&#xff1a; RGB成像原理&#xff1a; YUV成像原理&#xff1a; 二、多线程 三、ffmpeg解码&#xff08;照片提取&#xff09; 1.准备工作 &#xff08;1&#xff09;在工程文件夹里面新建三个文件夹 &#xff08;2&#xff09;在main函数中加…...

大语言模型中的 Token:它们是什么,如何工作?

引言 如果你使用过 ChatGPT 这样的 AI 工具&#xff0c;你可能会好奇&#xff1a;它是如何理解并生成文字的&#xff1f;大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;并不是直接处理整个句子或文章&#xff0c;而是拆分成一个个 Token&#xff08;…...

如何评估所选择的PHP后端框架的性能?

大家在选择PHP后端框架的时候&#xff0c;如果想评估其性能如何&#xff0c;能不能扛得住你的项目&#xff1f;可以根据以下几点进行分析&#xff0c;帮助大家选择到更符合自己心目中的PHP后端框架。 1. 基准测试 基准测试是评估框架性能的基础方法&#xff0c;主要通过模拟高…...

从UNIX到Linux:操作系统进化史与开源革命

从UNIX到Linux&#xff1a;操作系统进化史与开源革命 一、操作系统&#xff1a;数字世界的基石 1.1 什么是操作系统&#xff1f; 操作系统&#xff08;OS&#xff09;是计算机系统的核心管理者&#xff0c;承担着三大核心使命&#xff1a; 硬件指挥官&#xff1a;直接管理C…...

神经网络 - 激活函数(Sigmoid 型函数)

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力&#xff0c;激活函数需要具备以下几点性质: (1) 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数. (2) 激活函数及其导函数要尽可能的简单&#xff0…...

【AD】3-10 原理图PDF导出

文件—智能PDF 多页原理图导出 导出设置时选择工程&#xff0c;可自行选择导出一页或多页原理图&#xff0c;一般PCB不用导出...

Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例

设计一个在Linux上运行的GCC C程序&#xff0c;同时连接三个不同的MySQL实例&#xff0c;其中两个实例中分别有两个Schema的表结构分别与第三实例中两个Schema个结构完全相同&#xff0c;同时复制两个实例中两个Schema里的所有表的数据到第三个实例中两个Schema里&#xff0c;使…...

C进阶 自定义类型

目录 前言 一 结构体 二 结构体的存储 三 位段 四 枚举 五 联合体 总结 前言 我们之前学习的int char double ......都是内置类型&#xff0c;但是我们今天所学习的是自定义类型&#xff0c;比如联合体&#xff0c;结构体&#xff0c;枚举 一 结构体 结构体是一…...

010 rocketmq批量消息

文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能&#xff0c;但有⼀定的限制&#xff1a; topic 相同 waitStoreMsgOK 相同 &#xff08;⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...

【华三】从零开始掌握SR技术:原理、架构与应用全解析

【华三】从零开始掌握SR技术&#xff1a;原理、架构与应用全解析 一、初识SR&#xff1a;路由技术的新革命1.1 传统网络的困扰&#xff1a;从真实案例看技术瓶颈1.1.1 企业网络运维之痛问题2&#xff1a;流量工程实现困难问题3&#xff1a;网络智能化缺失 1.2 SR的诞生意义&…...

安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类

文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...

考虑复杂遭遇场景下的COLREG,基于模型预测人工势场的船舶运动规划方法附Matlab代码

考虑复杂遭遇场景下的COLREG&#xff0c;基于模型预测人工势场的船舶运动规划方法附Matlab代码 一、引言 1.1、研究背景和意义 随着全球航运业的迅猛发展&#xff0c;船舶交通密度不断增大&#xff0c;海上交通事故频发&#xff0c;严重威胁到海上航行的安全。国际海上避碰规…...

构建高效系统:API接口设计规范详解

在当今的数字化时代&#xff0c;应用程序接口&#xff08;API&#xff0c;Application Programming Interface&#xff09;已成为连接不同软件系统和服务的桥梁&#xff0c;是推动数字化转型的关键技术之一。无论是企业内部系统集成、第三方服务接入&#xff0c;还是面向开发者…...

【文献阅读】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models

发表时间&#xff1a;二〇二四年九月二十三日 摘要 大型基础模型&#xff0c;包括大语言模型&#xff08;LLMs&#xff09;、视觉Transformer&#xff08;ViTs&#xff09;、扩散模型以及基于大语言模型的多模态模型&#xff0c;正在革新整个机器学习的生命周期&#xff0c;…...