编辑推荐
本书介绍Solidity、web3基础和漏洞原理的相关内容。
内容简介
本书从环境介绍,Solidity、web3基础和漏洞原理及利用方面,详细地介绍智能合约相关漏洞知识。
其中,第一部分介绍了Remix IDE、Metamask 以及geth等环境的安装和使用方法;第二部分介绍了solidity语言的基础知识与基本语法,以及web3的使用方法;第三部分重点讲解了智能合约常见漏洞的基本原理及其攻击方式,同时还增加了Ethernaut通关游戏的部分内容,以此来加深对漏洞原理的理解。
作者简介
作者天融信科技集团(证券代码:002212)创始于1995年,是国内首家网络安全企业,亲历中国网络安全产业的发展历程,如今已从中国第一台自主研发防火墙的缔造者成长为中国领先的网络安全、大数据与云服务提供商。
天融信始终以捍卫国家网络空间安全为己任,创新超越,致力于成为民族安全产业的领导者、领先安全技术的创造者和数字时代安全的赋能者。
章节目录
版权信息
内容简介
序
前言
第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
区块链智能合约安全入门是2024年由电子工业出版社出版,作者天融信科技集团 等。
得书感谢您对《区块链智能合约安全入门》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。