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

Solidity智能合约漏洞类型与解题思路指南

一、常见漏洞类型与通俗解释

1. 重入攻击(Reentrancy) 🌀

通俗解释:就像你去银行取钱,柜台人员先给你钱,然后再记账。你拿到钱后立即又要求取钱,由于账还没记,柜台又给你一次钱,这样循环下去你就能拿走银行所有的钱。

漏洞原理:合约在更新状态前调用外部合约,允许攻击者递归调用提款函数

典型代码

Solidity
function withdraw() public {
    uint bal = balances[msg.sender];
    require(bal > 0);
    (bool sent, ) = msg.sender.call{value: bal}(""); // 漏洞点:先转账后更新余额
    require(sent, "Failed to send Ether");
    balances[msg.sender] = 0;
}

2. 整数溢出/下溢(Integer Overflow/Underflow) 🔢

通俗解释:就像汽车里程表,当超过最大值时会从零重新开始。如果你有0元,再花1元,余额会变成非常大的数字。

漏洞原理:算术运算结果超出变量范围导致意外行为

典型代码

Solidity
uint8 public balance = 255;
balance += 1; // 溢出后balance变为0

3. 访问控制缺陷(Access Control) 🔓

通俗解释:就像你家门锁坏了,任何人都能进来拿东西。智能合约中如果没有权限检查,任何人都能调用关键函数。

漏洞原理:敏感函数缺乏适当的权限检查

典型代码

Solidity
function transferOwnership(address _newOwner) public {
    owner = _newOwner;// 没有检查msg.sender是否是当前owner
}

4. 时间戳依赖(Timestamp Dependency) ⏰

通俗解释:就像用不准确的闹钟来决定发工资时间,矿工可以稍微调整时间让你提前或延后拿到工资。

漏洞原理

http://www.dtcms.com/a/118397.html

相关文章:

  • 用Python 还是C\C++ 开发嵌入式物联网项目
  • 使用Python快速删除Docker容器、镜像和存储内容
  • oracle 游标的管理
  • ubuntu安装docker和docker-compose【简单详细版】
  • Git工作流、命令汇总
  • 【GEE学习笔记】报错解决:Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率),如何选择波段进行去云处理?
  • 图论:单源最短路(BF算法+迪杰斯特拉算法+spfa算法)
  • 制定大运维管理体系的标准、流程、机制、规范
  • SolidWorks2025三维计算机辅助设计(3D CAD)软件超详细图文安装教程(2025最新版保姆级教程)
  • Tiktok 关键字 视频及评论信息爬虫(2) [2025.04.07]
  • 【Vue】选项卡案例——NBA新闻
  • 大数据笔试题_第一阶段配套笔试题03
  • 滑动窗口思想 面试算法高频题
  • 双引擎驱动:智能知识库 + AI 陪练重构售后服务管理体系
  • 【一篇搞定配置】一篇带你从配置到使用(PyCharm远程)完成服务器运行项目(配置、使用一条龙)【全网最详细版】
  • 算法-尼姆博弈
  • 【【分享开发笔记,赚取电动螺丝刀】参考 RT-thread 的方式管理初始化函数调用】
  • 【Linux】iptables防火墙基本概念
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记2
  • 网络安全应急响应-文件痕迹排查
  • Nginx 反向代理:从入门到精通
  • 硬盘分区格式方案之 MBR(Master Boot Record)主引导记录的 主分区 和 扩展分区 笔记250407
  • KWDB 创作者计划—人工智能赋能工业制造:智能制造的未来之路
  • M1使用docker制作镜像xxl-job,供自己使用
  • IntelliJ IDEA下开发FPGA——FPGA开发体验提升__上
  • springboot 项目怎样开启https服务
  • 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
  • 03_docker 部署 nginx 配置 HTTPS 并转发请求到后端服务
  • WebVTT 教程
  • dfs练习