区块链智能合约安全入门

区块链智能合约安全入门

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书介绍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年由电子工业出版社出版,作者天融信科技集团 等。

得书感谢您对《区块链智能合约安全入门》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
破冰区块链:原理、搭建与案例 电子书
拒绝浮躁,让区块链创造真正的价值。
2020区块链漫游指南 电子书
本书各章命名为“星系”,共分为6个星系,围绕区块链概念及其技术、去中心化身份、去中心化应用、区块链开发实战等方面由宏观到微观、从非技术到技术层层推进,介绍了区块链的理念和知识,努力为读者勾勒区块链认知全景图。
区块链架构与实现:Cosmos详解 电子书
本书系统的阐述Cosmos的相关机制。
超级账本HyperLedgerFabric区块链开发实战 电子书
结合实战经验,从基础的概念和原理,到实际的执行与案例,讲解HyperLedger Fabric应用开发,手把手部署引导,帮助你轻松上线区块链超级账本项目。
打造超级区块链社区:建设、运营、实践 电子书
本书深入浅出,详细讲解区块链社区的运营方法,帮助企业打造超级区块链社区。