展开全部

主编推荐语

本书介绍Solidity、web3基础和漏洞原理的相关内容。

内容简介

本书从环境介绍,Solidity、web3基础和漏洞原理及利用方面,详细地介绍智能合约相关漏洞知识。

其中,第一部分介绍了Remix IDE、Metamask 以及geth等环境的安装和使用方法;第二部分介绍了solidity语言的基础知识与基本语法,以及web3的使用方法;第三部分重点讲解了智能合约常见漏洞的基本原理及其攻击方式,同时还增加了Ethernaut通关游戏的部分内容,以此来加深对漏洞原理的理解。

目录

  • 版权信息
  • 内容简介
  • 前言
  • 第0章 初探区块链与智能合约
  • 关于区块链
  • 区块链定义
  • 区块链技术
  • 区块链层级结构
  • 区块链的优点
  • 关于智能合约
  • 以太坊
  • 第1章 环境准备
  • 1.1 使用npm安装Remix IDE
  • 1.2 使用docker安装Remix IDE
  • 1.3 使用docker安装geth
  • 1.4 本章总结
  • 第2章 Remix环境介绍和使用方法
  • 2.1 Remix环境的使用方法1
  • 部署学习
  • 2.2 Remix环境的使用方法2
  • 2.2.1 部署学习
  • 2.2.2 构造函数
  • 2.2.3 初始化合约余额
  • 2.3 Remix环境的使用方法3
  • Remix搭配MetaMask
  • 2.4 本章总结
  • 第3章 MetaMask的使用方法
  • 3.1 安装MetaMask
  • 3.2 获取测试币
  • 3.3 MetaMask Api的使用方法
  • 3.4 本章总结
  • 第4章 geth的使用方法
  • 4.1 geth基础命令
  • 子命令的使用方法
  • 4.2 console的基础命令
  • 4.2.1 console中web3对象的命令
  • 4.2.2 console中的挖矿
  • 4.3 geth启动节点
  • 4.3.1 启动节点
  • 4.3.2 测试节点
  • 4.3.3 启动参数说明
  • 4.3.4 关于RPC
  • 4.3.5 连接节点
  • 4.3.6 新建用户
  • 4.3.7 开始挖矿
  • 4.3.8 测试转账
  • 4.4 部署智能合约1
  • 4.4.1 使用容器提供例子
  • 4.4.2 重新编译
  • 4.5 调用智能合约1
  • 4.6 geth从头搭建私链
  • 4.6.1 创建目录
  • 4.6.2 启动私链节点
  • 4.7 部署智能合约2
  • 4.8 调用智能合约2
  • 4.9 geth的新版本
  • 4.10 本章总结
  • 第5章 Solidity语言基础
  • 5.1 创建合约
  • 5.2 合约接口
  • 5.3 变量类型
  • 5.4 变量修饰
  • 5.5 类型转换
  • 5.6 数学运算
  • 5.7 字符串比较
  • 5.8 结构体
  • 5.9 普通数组
  • 5.10 函数定义及修饰
  • 5.11 构造函数
  • 5.12 函数返回值
  • 5.13 自毁函数
  • 5.14 fallback函数
  • 5.15 receive函数
  • 5.16 msg全局变量和tx全局变量
  • 5.16.1 msg全局变量
  • 5.16.2 tx全局变量
  • 5.17 创建事件
  • 5.18 循环结构
  • 5.19 以太币单位
  • 5.20 转账函数
  • 5.21 本章总结
  • 第6章 Solidity数据存储
  • 6.1 存储中的状态变量存储结构
  • 6.2 紧凑存储
  • 6.3 动态大小数据存储
  • 6.3.1 动态String
  • 6.3.2 关于length*2问题
  • 6.4 动态数组存储
  • 6.5 字典mapping存储
  • 6.6 本章总结
  • 第7章 web3.js和web3.py
  • 7.1 web3.js
  • 7.2 web3.js配合MetaMask使用
  • 7.2.1 异步请求方式1
  • 7.2.2 异步请求方式2
  • 7.2.3 异步请求方式3
  • 7.3 常用函数
  • 7.3.1 hash函数
  • 7.3.2 与地址相关
  • 7.3.3 单位转换
  • 7.3.4 字符串转换
  • 7.3.5 账户和余额
  • 7.3.6 获取插槽数据
  • 7.3.7 获取区块信息
  • 7.3.8 获取交易信息
  • 7.3.9 交易签名和发送
  • 7.3.10 ABI签名和编码
  • 7.4 web3.js连接节点
  • 7.5 web3.js部署合约
  • 7.6 web3.js合约交互
  • 7.6.1 实例化合约对象
  • 7.6.2 web3.js call调用
  • 7.6.3 web3.js send调用
  • 7.7 web3.py
  • 7.8 web3.py部署合约
  • 7.9 web3.py合约交互
  • 7.10 本章总结
  • 第8章 利用漏洞
  • 8.1 关于call函数
  • 8.1.1 函数选择器(函数签名)
  • 8.1.2 call函数无参数调用
  • 8.1.3 call函数有参数调用
  • 8.1.4 call函数调用其他合约
  • 8.2 漏洞场景
  • 8.3 代码分析
  • 8.4 漏洞复现
  • 8.5 本章总结
  • 第9章 重入漏洞
  • 9.1 关于重入漏洞
  • 9.2 关于fallback函数
  • 9.3 攻击场景
  • 9.4 漏洞场景
  • 9.5 攻击演示
  • 9.6 本章总结
  • 第10章 整型溢出漏洞
  • 10.1 溢出原理
  • 10.2 溢出场景
  • 10.2.1 加法溢出
  • 10.2.2 减法溢出
  • 10.3 案例分析
  • 10.3.1 BEC合约代码片段
  • 10.3.2 代码分析
  • 10.4 攻击模拟
  • 10.5 本章总结
  • 第11章 访问控制漏洞
  • 11.1 关于访问控制漏洞
  • 11.1.1 代码层面的可见性
  • 11.1.2 逻辑层面的权限约束
  • 11.2 漏洞场景1
  • 11.2.1 漏洞场景分析
  • 11.2.2 漏洞场景演示
  • 11.2.3 规避建议
  • 11.3 漏洞场景2
  • 11.3.1 漏洞场景分析
  • 11.3.2 漏洞场景演示
  • 11.3.3 规避建议
  • 11.4 漏洞场景3
  • 11.4.1 tx.origin全局变量和msg.sender全局变量
  • 11.4.2 漏洞场景分析
  • 11.4.3 漏洞场景演示
  • 11.4.4 规避建议
  • 11.5 本章总结
  • 第12章 未检查返回值
  • 12.1 低级别调用函数
  • 12.2 低级别调用中产生异常的原因
  • 12.3 低级别函数与普通函数调用的区别
  • 12.4 漏洞场景
  • 12.4.1 关于send函数
  • 12.4.2 漏洞场景分析
  • 12.4.3 漏洞场景演示
  • 12.5 真实案例
  • 12.6 漏洞预防
  • 第13章 可预测随机值
  • 13.1 随机数生成
  • 13.1.1 区块变量作为熵源的PRNG
  • 13.1.2 区块变量测试
  • 13.2 漏洞场景
  • 13.2.1 漏洞场景分析
  • 13.2.2 漏洞场景演示
  • 13.3 漏洞修复
  • 第14章 时间控制漏洞
  • 14.1 关于block.timestamp
  • 14.2 以太坊中时间戳的合理要求
  • 14.3 漏洞场景1
  • 14.3.1 漏洞场景分析
  • 14.3.2 漏洞场景演示
  • 14.3.3 另外攻击姿势
  • 14.4 漏洞场景2
  • 14.5 本章总结
  • 第15章 抢先交易漏洞
  • 15.1 关于抢先交易漏洞
  • 15.2 满足“抢先交易”的条件
  • 15.3 决定交易顺序的原则
  • 15.3.1 手续费高低原则
  • 15.3.2 先进先出原则
  • 15.3.3 共识节点排序原则
  • 15.4 交易池
  • 15.5 攻击流程
  • 15.6 漏洞场景分析
  • 15.7 漏洞场景演示
  • 15.7.1 本地搭建私链
  • 15.7.2 错误不期而遇
  • 15.7.3 改用geth
  • 15.7.4 部署合约
  • 15.7.5 攻击演示
  • 15.7.6 小结
  • 15.8 本章总结
  • 第16章 短地址攻击漏洞
  • 16.1 关于短地址攻击漏洞
  • 16.2 漏洞场景分析
  • 16.3 攻击者地址的生成
  • 16.4 漏洞场景演示
  • 16.5 本章总结
  • 第17章 拒绝服务漏洞
  • 17.1 关于拒绝服务漏洞
  • 17.2 漏洞场景1
  • 17.2.1 漏洞场景演示
  • 17.2.2 selfdestruct函数
  • 17.3 漏洞场景2
  • 17.3.1 所有者丢失
  • 17.3.2 漏洞场景演示
  • 17.4 漏洞场景3
  • 17.5 漏洞场景4
  • 17.5.1 非预期异常
  • 17.5.2 攻击payload
  • 17.5.3 漏洞场景演示
  • 17.6 本章总结
  • 第18章 账户及账户生成
  • 18.1 以太坊账户
  • 18.2 以太坊地址
  • 18.3 外部账户的生成
  • 18.4 特定外部账户的生成
  • 18.5 合约账户的生成
  • 18.6 Create2
  • 18.6.1 关于Create2
  • 18.6.2 Create code
  • 18.6.3 Factory合约
  • 18.7 本章总结
  • 第19章 Ethernaut
  • 19.1 关于Ethernaut
  • 19.2 环境准备
  • 19.2.1 Hello Ethernaut
  • 19.2.2 安装MetaMask插件
  • 19.2.3 测试网络的选择
  • 19.2.4 控制台的使用
  • 19.3 本章总结
  • 第20章 Ethernaut Level 1
  • 20.1 Level 1 Fallback
  • 20.2 源码分析
  • 20.2.1 fallback函数
  • 20.2.2 攻击过程
  • 20.3 闯关尝试
  • 20.4 本章总结
  • 第21章 Ethernaut Level 2~5
  • 21.1 Level 2 Fallout
  • 21.1.1 关卡源码
  • 21.1.2 源码分析
  • 21.1.3 闯关尝试
  • 21.2 Level 3 CoinFlip
  • 21.2.1 关卡源码
  • 21.2.2 源码分析
  • 21.2.3 闯关尝试
  • 21.2.4 攻击payload
  • 21.2.5 问题总结
  • 21.3 Level 4 Telephone
  • 21.3.1 关卡源码
  • 21.3.2 源码分析
  • 21.3.3 攻击payload
  • 21.3.4 闯关尝试
  • 21.4 Level 5 Token
  • 21.4.1 关卡源码
  • 21.4.2 源码分析
  • 21.4.3 闯关尝试
  • 21.5 本章总结
  • 第22章 Ethernaut Level 6~9
  • 22.1 Level 6 Delegation
  • 22.1.1 关卡源码
  • 22.1.2 源码分析
  • 22.1.3 闯关尝试
  • 22.1.4 另谋出路
  • 22.2 Level 7 Force
  • 22.2.1 关卡源码
  • 22.2.2 源码分析
  • 22.2.3 攻击payload
  • 22.2.4 闯关尝试
  • 22.3 Leval 8 Vault
  • 22.3.1 关卡源码
  • 22.3.2 源码分析
  • 22.3.3 闯关尝试
  • 22.4 Level 9 King
  • 22.4.1 关卡源码
  • 22.4.2 源码分析
  • 22.4.3 攻击payload
  • 22.4.4 闯关尝试
  • 22.5 本章总结
  • 第23章 Ethernaut Level 10~13
  • 23.1 Level 10 Reentrance
  • 23.1.1 关卡源码
  • 23.1.2 源码分析
  • 23.1.3 关于重入漏洞
  • 23.1.4 攻击payload
  • 23.1.5 闯关尝试
  • 23.2 Level 11 Elevator
  • 23.2.1 关卡源码
  • 23.2.2 源码分析
  • 23.2.3 攻击payload
  • 23.2.4 闯关尝试
  • 23.3 Level 12 Privacy
  • 23.3.1 关卡源码
  • 23.3.2 源码分析
  • 23.3.3 闯关尝试
  • 23.4 Level 13 GatekeeperOne
  • 23.4.1 关卡源码
  • 23.4.2 源码分析
  • 23.4.3 攻击payload
  • 23.4.4 闯关尝试
  • 23.5 本章总结
  • 第24章 Ethernaut Level 14~17
  • 24.1 Level 14 GatekeeperTwo
  • 24.1.1 关卡源码
  • 24.1.2 源码分析
  • 24.1.3 攻击payload
  • 24.1.4 闯关尝试
  • 24.2 Level 15 NaughtCoin
  • 24.2.1 关卡源码
  • 24.2.2 源码分析
  • 24.2.3 闯关尝试
  • 24.3 Level 16 Preservation
  • 24.3.1 关卡源码
  • 24.3.2 源码分析
  • 24.3.3 攻击payload
  • 24.3.4 闯关尝试
  • 24.4 Level 17 Recovery
  • 24.4.1 关卡源码
  • 24.4.2 源码分析
  • 24.4.3 闯关尝试
  • 24.5 本章总结
  • 第25章 Ethernaut Level 18~20
  • 25.1 Level 18 MagicNumber
  • 25.1.1 关卡源码
  • 25.1.2 源码分析
  • 25.1.3 闯关尝试
  • 25.2 Level 19 AlienCodex
  • 25.2.1 关卡源码
  • 25.2.2 源码分析
  • 25.2.3 闯关尝试
  • 25.3 Level 20 Denial
  • 25.3.1 关卡源码
  • 25.3.2 源码分析
  • 25.3.3 payload
  • 25.3.4 闯关尝试
  • 25.4 本章总结
  • 第26章 通用payload
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。