區塊鏈智能合約安全入門

天融信科技集團 等

  • 出版商: 電子工業
  • 出版日期: 2024-08-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 260
  • ISBN: 7121447568
  • ISBN-13: 9787121447563
  • 相關分類: 區塊鏈 Blockchain
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

相關主題

商品描述

《智能合約安全入門》從環境介紹,Solidity、web3基礎和漏洞原理及利用方面,詳細地介紹智能合約相關漏洞知識。其中,第一部分介紹了 Remix IDE、Metamask 以及geth等環境的安裝和使用方法;第二部分介紹了solidity語言的基礎知識與基本語法,以及web3的使用方法;第三部分重點講解了智能合約常見漏洞的基本原理及其攻擊方式,同時還增加了 Ethernaut 通關游戲的部分內容,以此來加深對漏洞原理的理解。

目錄大綱

目 錄
第0章 初探區塊鏈與智能合約 1
關於區塊鏈 1
區塊鏈定義 1
區塊鏈技術 1
區塊鏈層級結構 2
區塊鏈的優點 2
關於智能合約 2
以太坊 3
第1章 環境準備 5
1.1 使用npm安裝Remix IDE 5
1.2 使用docker安裝Remix IDE 6
1.3 使用docker安裝geth 7
1.4 本章總結 8
第2章 Remix環境介紹和使用方法 9
2.1 Remix環境的使用方法1 9
部署學習 11
2.2 Remix環境的使用方法2 12
2.2.1 部署學習 13
2.2.2 構造函數 14
2.2.3 初始化合約餘額 14
2.3 Remix環境的使用方法3 15
Remix搭配MetaMask 15
2.4 本章總結 17
第3章 MetaMask的使用方法 18
3.1 安裝MetaMask 18
3.2 獲取測試幣 20
3.3 MetaMask Api的使用方法 21
3.4 本章總結 22
第4章 geth的使用方法 23
4.1 geth基礎命令 23
子命令的使用方法 24
4.2 console的基礎命令 25
4.2.1 console中web3對象的命令 25
4.2.2 console中的挖礦 26
4.3 geth啟動節點 26
4.3.1 啟動節點 26
4.3.2 測試節點 27
4.3.3 啟動參數說明 27
4.3.4 關於RPC 27
4.3.5 連接節點 28
4.3.6 新建用戶 28
4.3.7 開始挖礦 28
4.3.8 測試轉賬 29
4.4 部署智能合約1 30
4.4.1 使用容器提供例子 30
4.4.2 重新編譯 31
4.5 調用智能合約1 34
4.6 geth從頭搭建私鏈 36
4.6.1 創建目錄 36
4.6.2 啟動私鏈節點 38
4.7 部署智能合約2 39
4.8 調用智能合約2 40
4.9 geth的新版本 40
4.10 本章總結 41
第5章 Solidity語言基礎 42
5.1 創建合約 42
5.2 合約接口 43
5.3 變量類型 44
5.4 變量修飾 44
5.5 類型轉換 45
5.6 數學運算 45
5.7 字符串比較 46
5.8 結構體 46
5.9 普通數組 46
5.10 函數定義及修飾 47
5.11 構造函數 47
5.12 函數返回值 48
5.13 自毀函數 48
5.14 fallback函數 49
5.15 receive函數 50
5.16 msg全局變量和tx全局變量 50
5.16.1 msg全局變量 50
5.16.2 tx全局變量 51
5.17 創建事件 52
5.18 循環結構 53
5.19 以太幣單位 53
5.20 轉賬函數 54
5.21 本章總結 55
第6章 Solidity數據存儲 56
6.1 存儲中的狀態變量存儲結構 56
6.2 緊湊存儲 57
6.3 動態大小數據存儲 58
6.3.1 動態String 58
6.3.2 關於length*2問題 60
6.4 動態數組存儲 60
6.5 字典mapping存儲 61
6.6 本章總結 62
第7章 web3.js和web3.py 63
7.1 web3.js 63
7.2 web3.js配合MetaMask使用 64
7.2.1 異步請求方式1 65
7.2.2 異步請求方式2 65
7.2.3 異步請求方式3 66
7.3 常用函數 67
7.3.1 hash函數 67
7.3.2 與地址相關 68
7.3.3 單位轉換 68
7.3.4 字符串轉換 68
7.3.5 賬戶和餘額 69
7.3.6 獲取插槽數據 69
7.3.7 獲取區塊信息 69
7.3.8 獲取交易信息 70
7.3.9 交易簽名和發送 71
7.3.10 ABI簽名和編碼 73
7.4 web3.js連接節點 74
7.5 web3.js部署合約 75
7.6 web3.js合約交互 77
7.6.1 實例化合約對象 77
7.6.2 web3.js call調用 77
7.6.3 web3.js send調用 78
7.7 web3.py 78
7.8 web3.py部署合約 79
7.9 web3.py合約交互 79
7.10 本章總結 80
第8章 利用漏洞 81
8.1 關於call函數 81
8.1.1 函數選擇器(函數簽名) 81
8.1.2 call函數無參數調用 83
8.1.3 call函數有參數調用 85
8.1.4 call函數調用其他合約 87
8.2 漏洞場景 88
8.3 代碼分析 89
8.4 漏洞復現 89
8.5 本章總結 91
第9章 重入漏洞 92
9.1 關於重入漏洞 92
9.2 關於fallback函數 92
9.3 攻擊場景 92
9.4 漏洞場景 93
9.5 攻擊演示 95
9.6 本章總結 98
第10章 整型溢出漏洞 99
10.1 溢出原理 99
10.2 溢出場景 100
10.2.1 加法溢出 100
10.2.2 減法溢出 101
10.3 案例分析 102
10.3.1 BEC合約代碼片段 102
10.3.2 代碼分析 102
10.4 攻擊模擬 103
10.5 本章總結 105
第11章 訪問控制漏洞 106
11.1 關於訪問控制漏洞 106
11.1.1 代碼層面的可見性 106
11.1.2 邏輯層面的權限約束 106
11.2 漏洞場景1 106
11.2.1 漏洞場景分析 107
11.2.2 漏洞場景演示 107
11.2.3 規避建議 109
11.3 漏洞場景2 109
11.3.1 漏洞場景分析 110
11.3.2 漏洞場景演示 110
11.3.3 規避建議 110
11.4 漏洞場景3 111
11.4.1 tx.origin全局變量和msg.sender全局變量 111
11.4.2 漏洞場景分析 111
11.4.3 漏洞場景演示 112
11.4.4 規避建議 114
11.5 本章總結 114
第12章 未檢查返回值 115
12.1 低級別調用函數 115
12.2 低級別調用中產生異常的原因 115
12.3 低級別函數與普通函數調用的區別 116
12.4 漏洞場景 116
12.4.1 關於send函數 117
12.4.2 漏洞場景分析 117
12.4.3 漏洞場景演示 117
12.5 真實案例 119
12.6 漏洞預防 120
第13章 可預測隨機值 121
13.1 隨機數生成 121
13.1.1 區塊變量作為熵源的PRNG 121
13.1.2 區塊變量測試 121
13.2 漏洞場景 123
13.2.1 漏洞場景分析 123
13.2.2 漏洞場景演示 124
13.3 漏洞修復 125
第14章 時間控制漏洞 126
14.1 關於block.timestamp 126
14.2 以太坊中時間戳的合理要求 126
14.3 漏洞場景1 127
14.3.1 漏洞場景分析 127
14.3.2 漏洞場景演示 128
14.3.3 另外攻擊姿勢 131
14.4 漏洞場景2 132
14.5 本章總結 132
第15章 搶先交易漏洞 134
15.1 關於搶先交易漏洞 134
15.2 滿足“搶先交易”的條件 134
15.3 決定交易順序的原則 134
15.3.1 手續費高低原則 134
15.3.2 先進先出原則 135
15.3.3 共識節點排序原則 135
15.4 交易池 135
15.5 攻擊流程 136
15.6 漏洞場景分析 137
15.7 漏洞場景演示 138
15.7.1 本地搭建私鏈 138
15.7.2 錯誤不期而遇 139
15.7.3 改用geth 140
15.7.4 部署合約 141
15.7.5 攻擊演示 142
15.7.6 小結 143
15.8 本章總結 145
第16章 短地址攻擊漏洞 147
16.1 關於短地址攻擊漏洞 147
16.2 漏洞場景分析 148
16.3 攻擊者地址的生成 149
16.4 漏洞場景演示 150
16.5 本章總結 152
第17章 拒絕服務漏洞 153
17.1 關於拒絕服務漏洞 153
17.2 漏洞場景1 153
17.2.1 漏洞場景演示 154
17.2.2 selfdestruct函數 155
17.3 漏洞場景2 156
17.3.1 所有者丟失 156
17.3.2 漏洞場景演示 156
17.4 漏洞場景3 158
17.5 漏洞場景4 159
17.5.1 非預期異常 159
17.5.2 攻擊payload 159
17.5.3 漏洞場景演示 160
17.6 本章總結 161
第18章 賬戶及賬戶生成 162
18.1 以太坊賬戶 162
18.2 以太坊地址 163
18.3 外部賬戶的生成 163
18.4 特定外部賬戶的生成 167
18.5 合約賬戶的生成 168
18.6 Create2 170
18.6.1 關於Create2 170
18.6.2 Create code 170
18.6.3 Factory合約 171
18.7 本章總結 175
第19章 Ethernaut 176
19.1 關於Ethernaut 176
19.2 環境準備 177
19.2.1 Hello Ethernaut 177
19.2.2 安裝MetaMask插件 177
19.2.3 測試網絡的選擇 177
19.2.4 控制台的使用 178
19.3 本章總結 178
第20章 Ethernaut Level 1 179
20.1 Level 1 Fallback 179
20.2 源碼分析 180
20.2.1 fallback函數 180
20.2.2 攻擊過程 181
20.3 闖關嘗試 181
20.4 本章總結 183
第21章 Ethernaut Level 2~5 184
21.1 Level 2 Fallout 184
21.1.1 關卡源碼 184
21.1.2 源碼分析 185
21.1.3 闖關嘗試 185
21.2 Level 3 CoinFlip 186
21.2.1 關卡源碼 186
21.2.2 源碼分析 187
21.2.3 闖關嘗試 187
21.2.4 攻擊payload 187
21.2.5 問題總結 190
21.3 Level 4 Telephone 190
21.3.1 關卡源碼 190
21.3.2 源碼分析 191
21.3.3 攻擊payload 191
21.3.4 闖關嘗試 191
21.4 Level 5 Token 192
21.4.1 關卡源碼 192
21.4.2 源碼分析 193
21.4.3 闖關嘗試 193
21.5 本章總結 194
第22章 Ethernaut Level 6~9 195
22.1 Level 6 Delegation 195
22.1.1 關卡源碼 195
22.1.2 源碼分析 196
22.1.3 闖關嘗試 197
22.1.4 另謀出路 198
22.2 Level 7 Force 199
22.2.1 關卡源碼 199
22.2.2 源碼分析 199
22.2.3 攻擊payload 200
22.2.4 闖關嘗試 200
22.3 Leval 8 Vault 201
22.3.1 關卡源碼 201
22.3.2 源碼分析 202
22.3.3 闖關嘗試 202
22.4 Level 9 King 202
22.4.1 關卡源碼 203
22.4.2 源碼分析 203
22.4.3 攻擊payload 204
22.4.4 闖關嘗試 204
22.5 本章總結 205
第23章 Ethernaut Level 10~13 206
23.1 Level 10 Reentrance 206
23.1.1 關卡源碼 206
23.1.2 源碼分析 207
23.1.3 關於重入漏洞 207
23.1.4 攻擊payload 207
23.1.5 闖關嘗試 208
23.2 Level 11 Elevator 209
23.2.1 關卡源碼 209
23.2.2 源碼分析 210
23.2.3 攻擊payload 210
23.2.4 闖關嘗試 211
23.3 Level 12 Privacy 211
23.3.1 關卡源碼 211
23.3.2 源碼分析 212
23.3.3 闖關嘗試 213
23.4 Level 13 GatekeeperOne 214
23.4.1 關卡源碼 214
23.4.2 源碼分析 215
23.4.3 攻擊payload 215
23.4.4 闖關嘗試 215
23.5 本章總結 218
第24章 Ethernaut Level 14~17 219
24.1 Level 14 GatekeeperTwo 219
24.1.1 關卡源碼 219
24.1.2 源碼分析 220
24.1.3 攻擊payload 221
24.1.4 闖關嘗試 221
24.2 Level 15 NaughtCoin 222
24.2.1 關卡源碼 222
24.2.2 源碼分析 223
24.2.3 闖關嘗試 224
24.3 Level 16 Preservation 224
24.3.1 關卡源碼 224
24.3.2 源碼分析 225
24.3.3 攻擊payload 226
24.3.4 闖關嘗試 227
24.4 Level 17 Recovery 228
24.4.1 關卡源碼 228
24.4.2 源碼分析 229
24.4.3 闖關嘗試 229
24.5 本章總結 230
第25章 Ethernaut Level 18~20 231
25.1 Level 18 MagicNumber 231
25.1.1 關卡源碼 231
25.1.2 源碼分析 232
25.1.3 闖關嘗試 233
25.2 Level 19 AlienCodex 235
25.2.1 關卡源碼 235
25.2.2 源碼分析 235
25.2.3 闖關嘗試 237
25.3 Level 20 Denial 238
25.3.1 關卡源碼 238
25.3.2 源碼分析 239
25.3.3 payload 240
25.3.4 闖關嘗試 240
25.4 本章總結 242
第26章 通用payload 243