图书 | 区块链智能合约安全入门 |
内容 | 内容推荐 《智能合约安全入门》从环境介绍,Solidity、web3基础和漏洞原理及利用方面,详细地介绍智能合约相关漏洞知识。其中,第一部分介绍了 Remix IDE、Metamask 以及geth等环境的安装和使用方法;第二部分介绍了solidity语言的基础知识与基本语法,以及web3的使用方法;第三部分重点讲解了智能合约常见漏洞的基本原理及其攻击方式,同时还增加了 Ethernaut 通关游戏的部分内容,以此来加深对漏洞原理的理解。 目录 目 录 第0章 初探区块链与智能合约\t1 关于区块链\t1 区块链定义\t1 区块链技术\t1 区块链层级结构\t2 区块链的优点\t2 关于智能合约\t2 以太坊\t3 第1章 环境准备\t5 1.1 使用npm安装Remix IDE\t5 1.2 使用docker安装Remix IDE\t6 1.3 使用docker安装geth\t7 1.4 本章总结\t8 第2章 Remix环境介绍和使用方法\t9 2.1 Remix环境的使用方法1\t9 部署学习\t11 2.2 Remix环境的使用方法2\t12 2.2.1 部署学习\t13 2.2.2 构造函数\t14 2.2.3 初始化合约余额\t14 2.3 Remix环境的使用方法3\t15 Remix搭配MetaMask\t15 2.4 本章总结\t17 第3章 MetaMask的使用方法\t18 3.1 安装MetaMask\t18 3.2 获取测试币\t20 3.3 MetaMask Api的使用方法\t21 3.4 本章总结\t22 第4章 geth的使用方法\t23 4.1 geth基础命令\t23 子命令的使用方法\t24 4.2 console的基础命令\t25 4.2.1 console中web3对象的命令\t25 4.2.2 console中的挖矿\t26 4.3 geth启动节点\t26 4.3.1 启动节点\t26 4.3.2 测试节点\t27 4.3.3 启动参数说明\t27 4.3.4 关于RPC\t27 4.3.5 连接节点\t28 4.3.6 新建用户\t28 4.3.7 开始挖矿\t28 4.3.8 测试转账\t29 4.4 部署智能合约1\t30 4.4.1 使用容器提供例子\t30 4.4.2 重新编译\t31 4.5 调用智能合约1\t34 4.6 geth从头搭建私链\t36 4.6.1 创建目录\t36 4.6.2 启动私链节点\t38 4.7 部署智能合约2\t39 4.8 调用智能合约2\t40 4.9 geth的新版本\t40 4.10 本章总结\t41 第5章 Solidity语言基础\t42 5.1 创建合约\t42 5.2 合约接口\t43 5.3 变量类型\t44 5.4 变量修饰\t44 5.5 类型转换\t45 5.6 数学运算\t45 5.7 字符串比较\t46 5.8 结构体\t46 5.9 普通数组\t46 5.10 函数定义及修饰\t47 5.11 构造函数\t47 5.12 函数返回值\t48 5.13 自毁函数\t48 5.14 fallback函数\t49 5.15 receive函数\t50 5.16 msg全局变量和tx全局变量\t50 5.16.1 msg全局变量\t50 5.16.2 tx全局变量\t51 5.17 创建事件\t52 5.18 循环结构\t53 5.19 以太币单位\t53 5.20 转账函数\t54 5.21 本章总结\t55 第6章 Solidity数据存储\t56 6.1 存储中的状态变量存储结构\t56 6.2 紧凑存储\t57 6.3 动态大小数据存储\t58 6.3.1 动态String\t58 6.3.2 关于length*2问题\t60 6.4 动态数组存储\t60 6.5 字典mapping存储\t61 6.6 本章总结\t62 第7章 web3.js和web3.py\t63 7.1 web3.js\t63 7.2 web3.js配合MetaMask使用\t64 7.2.1 异步请求方式1\t65 7.2.2 异步请求方式2\t65 7.2.3 异步请求方式3\t66 7.3 常用函数\t67 7.3.1 hash函数\t67 7.3.2 与地址相关\t68 7.3.3 单位转换\t68 7.3.4 字符串转换\t68 7.3.5 账户和余额\t69 7.3.6 获取插槽数据\t69 7.3.7 获取区块信息\t69 7.3.8 获取交易信息\t70 7.3.9 交易签名和发送\t71 7.3.10 ABI签名和编码\t73 7.4 web3.js连接节点\t74 7.5 web3.js部署合约\t75 7.6 web3.js合约交互\t77 7.6.1 实例化合约对象\t77 7.6.2 web3.js call调用\t77 7.6.3 web3.js send调用\t78 7.7 web3.py\t78 7.8 web3.py部署合约\t79 7.9 web3.py合约交互\t79 7.10 本章总结\t80 第8章 利用漏洞\t81 8.1 关于call函数\t81 8.1.1 函数选择器(函数签名)\t81 8.1.2 call函数无参数调用\t83 8.1.3 call函数有参数调用\t85 8.1.4 call函数调用其他合约\t87 8.2 漏洞场景\t88 8.3 代码分析\t89 8.4 漏洞复现\t89 8.5 本章总结\t91 第9章 重入漏洞\t92 9.1 关于重入漏洞\t92 9.2 关于fallback函数\t92 9.3 攻击场景\t92 9.4 漏洞场景\t93 9.5 攻击演示\t95 9.6 本章总结\t98 第10章 整型溢出漏洞\t99 10.1 溢出原理\t99 10.2 溢出场景\t100 10.2.1 加法溢出\t100 10.2.2 减法溢出\t101 10.3 案例分析\t102 10.3.1 BEC合约代码片段\t102 10.3.2 代码分析\t102 10.4 攻击模拟\t103 10.5 本章总结\t105 第11章 访问控制漏洞\t106 11.1 关于访问控制漏洞\t106 11.1.1 代码层面的可见性\t106 11.1.2 逻辑层面的权限约束\t106 11.2 漏洞场景1\t106 11.2.1 漏洞场景分析\t107 11.2.2 漏洞场景演示\t107 11.2.3 规避建议\t109 11.3 漏洞场景2\t109 11.3.1 漏洞场景分析\t110 11.3.2 漏洞场景演示\t110 11.3.3 规避建议\t110 11.4 漏洞场景3\t111 11.4.1 tx.origin全局变量和msg.sender全局变量\t111 11.4.2 漏洞场景分析\t111 11.4.3 漏洞场景演示\t112 11.4.4 规避建议\t114 11.5 本章总结\t114 第12章 未检查返回值\t115 12.1 低级别调用函数\t115 12.2 低级别调用中产生异常的原因\t115 12.3 低级别函数与普通函数调用的区别\t116 12.4 漏洞场景\t116 12.4.1 关于send函数\t117 12.4.2 漏洞场景分析\t117 12.4.3 漏洞场景演示\t117 12.5 真实案例\t119 12.6 漏洞预防\t120 第13章 可预测随机值\t121 13.1 随机数生成\t121 13.1.1 区块变量作为熵源的PRNG\t121 13.1.2 区块变量测试\t121 13.2 漏洞场景\t123 13.2.1 漏洞场景分析\t123 13.2.2 漏洞场景演示\t124 13.3 漏洞修复\t125 第14章 时间控制漏洞\t126 14.1 关于block.timestamp\t126 14.2 以太坊中时间戳的合理要求\t126 14.3 漏洞场景1\t127 14.3.1 漏洞场景分析\t127 14.3.2 漏洞场景演示\t128 14.3.3 另外攻击姿势\t131 14.4 漏洞场景2\t132 14.5 本章总结\t132 第15章 抢先交易漏洞\t134 15.1 关于抢先交易漏洞\t134 15.2 满足“抢先交易”的条件\t134 15.3 决定交易顺序的原则\t134 15.3.1 手续费高低原则\t134 15.3.2 先进先出原则\t135 15.3.3 共识节点排序原则\t135 15.4 交易池\t135 15.5 攻击流程\t136 15.6 漏洞场景分析\t137 15.7 漏洞场景演示\t138 15.7.1 本地搭建私链\t138 15.7.2 错误不期而遇\t139 15.7.3 改用geth\t140 15.7.4 部署合约\t141 15.7.5 攻击演示\t142 15.7.6 小结\t143 15.8 本章总结\t145 第16章 短地址攻击漏洞\t147 16.1 关于短地址攻击漏洞\t147 16.2 漏洞场景分析\t148 16.3 攻击者地址的生成\t149 16.4 漏洞场景演示\t150 16.5 本章总结\t152 第17章 拒绝服务漏洞\t153 17.1 关于拒绝服务漏洞\t153 17.2 漏洞场景1\t153 17.2.1 漏洞场景演示\t154 17.2.2 selfdestruct函数\t155 17.3 漏洞场景2\t156 17.3.1 所有者丢失\t156 17.3.2 漏洞场景演示\t156 17.4 漏洞场景3\t158 17.5 漏洞场景4\t159 17.5.1 非预期异常\t159 17.5.2 攻击payload\t159 17.5.3 漏洞场景演示\t160 17.6 本章总结\t161 第18章 账户及账户生成\t162 18.1 以太坊账户\t162 18.2 以太坊地址\t163 18.3 外部账户的生成\t163 18.4 特定外部账户的生成\t167 18.5 合约账户的生成\t168 18.6 Create2\t170 18.6.1 关于Create2\t170 18.6.2 Create code\t170 18.6.3 Factory合约\t171 18.7 本章总结\t175 第19章 Ethernaut\t176 19.1 关于Ethernaut\t176 19.2 环境准备\t177 19.2.1 Hello Ethernaut\t177 19.2.2 安装MetaMask插件\t177 19.2.3 测试网络的选择\t177 19.2.4 控制台的使用\t178 19.3 本章总结\t178 第20章 Ethernaut Level 1\t179 20.1 Level 1 Fallback\t179 20.2 源码分析\t180 20.2.1 fallback函数\t180 20.2.2 攻击过程\t181 20.3 闯关尝试\t181 20.4 本章总结\t183 第21章 Ethernaut Level 2~5\t184 21.1 Level 2 Fallout\t184 21.1.1 关卡源码\t184 21.1.2 源码分析\t185 21.1.3 闯关尝试\t185 21.2 Level 3 CoinFlip\t186 21.2.1 关卡源码\t186 21.2.2 源码分析\t187 21.2.3 闯关尝试\t187 21.2.4 攻击payload\t187 21.2.5 问题总结\t190 21.3 Level 4 Telephone\t190 21.3.1 关卡源码\t190 21.3.2 源码分析\t191 21.3.3 攻击payload\t191 21.3.4 闯关尝试\t191 21.4 Level 5 Token\t192 21.4.1 关卡源码\t192 21.4.2 源码分析\t193 21.4.3 闯关尝试\t193 21.5 本章总结\t194 第22章 Ethernaut Level 6~9\t195 22.1 Level 6 Delegation\t195 22.1.1 关卡源码\t195 22.1.2 源码分析\t196 22.1.3 闯关尝试\t197 22.1.4 另谋出路\t198 22.2 Level 7 Force\t199 22.2.1 关卡源码\t199 22.2.2 源码分析\t199 22.2.3 攻击payload\t200 22.2.4 闯关尝试\t200 22.3 Leval 8 Vault\t201 22.3.1 关卡源码\t201 22.3.2 源码分析\t202 22.3.3 闯关尝试\t202 22.4 Level 9 King\t202 22.4.1 关卡源码\t203 22.4.2 源码分析\t203 22.4.3 攻击payload\t204 22.4.4 闯关尝试\t204 22.5 本章总结\t205 第23章 Ethernaut Level 10~13\t206 23.1 Level 10 Reentrance\t206 23.1.1 关卡源码\t206 23.1.2 源码分析\t207 23.1.3 关于重入漏洞\t207 23.1.4 攻击payload\t207 23.1.5 闯关尝试\t208 23.2 Level 11 Elevator\t209 23.2.1 关卡源码\t209 23.2.2 源码分析\t210 23.2.3 攻击payload\t210 23.2.4 闯关尝试\t211 23.3 Level 12 Privacy\t211 23.3.1 关卡源码\t211 23.3.2 源码分析\t212 23.3.3 闯关尝试\t213 23.4 Level 13 GatekeeperOne\t214 23.4.1 关卡源码\t214 23.4.2 源码分析\t215 23.4.3 攻击payload\t215 23.4.4 闯关尝试\t215 23.5 本章总结\t218 第24章 Ethernaut Level 14~17\t219 24.1 Level 14 GatekeeperTwo\t219 24.1.1 关卡源码\t219 24.1.2 源码分析\t220 24.1.3 攻击payload\t221 24.1.4 闯关尝试\t221 24.2 Level 15 NaughtCoin\t222 24.2.1 关卡源码\t222 24.2.2 源码分析\t223 24.2.3 闯关尝试\t224 24.3 Level 16 Preservation\t224 24.3.1 关卡源码\t224 24.3.2 源码分析\t225 24.3.3 攻击payload\t226 24.3.4 闯关尝试\t227 24.4 Level 17 Recovery\t228 24.4.1 关卡源码\t228 24.4.2 源码分析\t229 24.4.3 闯关尝试\t229 24.5 本章总结\t230 第25章 Ethernaut Level 18~20\t231 25.1 Level 18 MagicNumber\t231 25.1.1 关卡源码\t231 25.1.2 源码分析\t232 25.1.3 闯关尝试\t233 25.2 Level 19 AlienCodex\t235 25.2.1 关卡源码\t235 25.2.2 源码分析\t235 25.2.3 闯关尝试\t237 25.3 Level 20 Denial\t238 25.3.1 关卡源码\t238 25.3.2 源码分析\t239 25.3.3 payload\t240 25.3.4 闯关尝试\t240 25.4 本章总结\t242 第26章 通用payload\t243 |
标签 | |
缩略图 | ![]() |
书名 | 区块链智能合约安全入门 |
副书名 | |
原作名 | |
作者 | 天融信科技集团等 |
译者 | |
编者 | |
绘者 | |
出版社 | 电子工业出版社 |
商品编码(ISBN) | 9787121447563 |
开本 | 其他 |
页数 | 260 |
版次 | 1 |
装订 | |
字数 | |
出版时间 | 2024-08-01 |
首版时间 | |
印刷时间 | 2024-09-01 |
正文语种 | |
读者对象 | |
适用范围 | |
发行范围 | |
发行模式 | 实体书 |
首发网站 | |
连载网址 | |
图书大类 | 教育考试-考试-计算机类 |
图书小类 | |
重量 | |
CIP核字 | |
中图分类号 | TP311.135.9 |
丛书名 | |
印张 | |
印次 | 1 |
出版地 | |
长 | |
宽 | |
高 | |
整理 | |
媒质 | |
用纸 | |
是否注音 | |
影印版本 | |
出版商国别 | |
是否套装 | |
著作权合同登记号 | |
版权提供者 | |
定价 | |
印数 | |
出品方 | |
作品荣誉 | |
主角 | |
配角 | |
其他角色 | |
一句话简介 | |
立意 | |
作品视角 | |
所属系列 | |
文章进度 | |
内容简介 | |
作者简介 | |
目录 | |
文摘 | |
安全警示 | 适度休息有益身心健康,请勿长期沉迷于阅读小说。 |
随便看 |
|
兰台网图书档案馆全面收录古今中外各种图书,详细介绍图书的基本信息及目录、摘要等图书资料。