@@ -73,26 +73,27 @@ Note:
73
73
### Ethereum/contract basics
74
74
- These challenges can be solved if you know the basic mechanics of Ethereum, [ the basic language specification of Solidity] ( https://docs.soliditylang.org/en/latest/ ) , and the basic operation of contracts.
75
75
76
- | Challenge | Note, Keywords |
77
- | ------------------------------------------------- | ---------------------- |
78
- | Capture The Ether: Deploy a contract | faucet |
79
- | Capture The Ether: Call me | contract call |
80
- | Capture The Ether: Guess the number | contract call |
81
- | Capture The Ether: Guess the secret number | ` keccak256 ` |
82
- | [ Ethernaut: 0. Hello Ethernaut] ( src/Ethernaut/ ) | contract call, ABI |
83
- | [ Ethernaut: 1. Fallback] ( src/Ethernaut/ ) | receive Ether function |
84
- | [ Paradigm CTF 2021: Hello] ( src/ParadigmCTF2021/ ) | contract call |
85
- | 0x41414141 CTF: sanity-check | contract call |
86
- | 0x41414141 CTF: crackme.sol | |
87
- | [ Paradigm CTF 2022: RANDOM] ( src/ParadigmCTF2022/ ) | |
76
+ | Challenge | Note, Keywords |
77
+ | ------------------------------------------------------------------ | ---------------------- |
78
+ | [ Capture The Ether: Deploy a contract] ( src/CaptureTheEther/ ) | faucet, wallet |
79
+ | [ Capture The Ether: Call me] ( src/CaptureTheEther/ ) | contract call |
80
+ | [ Capture The Ether: Choose a nickname] ( src/CaptureTheEther/ ) | contract call |
81
+ | [ Capture The Ether: Guess the number] ( src/CaptureTheEther/ ) | contract call |
82
+ | [ Capture The Ether: Guess the secret number] ( src/CaptureTheEther/ ) | ` keccak256 ` |
83
+ | [ Ethernaut: 0. Hello Ethernaut] ( src/Ethernaut/ ) | contract call, ABI |
84
+ | [ Ethernaut: 1. Fallback] ( src/Ethernaut/ ) | receive Ether function |
85
+ | [ Paradigm CTF 2021: Hello] ( src/ParadigmCTF2021/ ) | contract call |
86
+ | 0x41414141 CTF: sanity-check | contract call |
87
+ | 0x41414141 CTF: crackme.sol | |
88
+ | [ Paradigm CTF 2022: RANDOM] ( src/ParadigmCTF2022/ ) | |
88
89
89
90
### EVM puzzles
90
91
- Puzzle challenges that can be solved by understanding the EVM specifications.
91
92
- No vulnerabilities are used to solve these challenges.
92
93
93
94
| Challenge | Note, Keywords |
94
95
| ------------------------------------------------------------------ | ---------------------------------------------------------------------- |
95
- | Capture The Ether: Guess the new number | ` block.number ` , ` block.timestamp ` (formerly: ` now ` ) |
96
+ | [ Capture The Ether: Guess the new number] ( src/CaptureTheEther/ ) | ` block.number ` , ` block.timestamp ` (formerly: ` now ` ) |
96
97
| Capture The Ether: Predict the block hash | ` blockhash ` (formerly: ` block.blockhash ` ) |
97
98
| [ Ethernaut: 13. Gatekeeper One] ( src/Ethernaut/ ) | ` msg.sender != tx.origin ` , ` gasleft().mod(8191) == 0 ` , type conversion |
98
99
| [ Ethernaut: 14. Gatekeeper Two] ( src/Ethernaut/ ) | ` msg.sender != tx.origin ` , ` extcodesize ` is 0 |
@@ -156,11 +157,11 @@ Note:
156
157
- Arithmetic overflow has been detected and reverted state since Solidity v0.8.0.
157
158
- Contracts written in earlier versions can be checked by using [ the SafeMath library] ( https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.4/contracts/math/SafeMath.sol ) .
158
159
159
- | Challenge | Note, Keywords |
160
- | ------------------------------------- | -------------- |
161
- | Capture The Ether: Token sale | multiplication |
162
- | Capture The Ether: Token whale | subtraction |
163
- | [ Ethernaut: 5. Token] ( src/Ethernaut/ ) | subtraction |
160
+ | Challenge | Note, Keywords |
161
+ | ------------------------------------------------------ | -------------- |
162
+ | [ Capture The Ether: Token sale] ( src/CaptureTheEther/ ) | multiplication |
163
+ | [ Capture The Ether: Token whale] ( src/CaptureTheEther/ ) | subtraction |
164
+ | [ Ethernaut: 5. Token] ( src/Ethernaut/ ) | subtraction |
164
165
165
166
### Non-executable Ether transfers to a contract
166
167
- Do not create a contract on the assumption that normal Ether transfer (` .send() ` or ` .transfer() ` ) can always be executed.
@@ -176,10 +177,10 @@ Note:
176
177
- When a contract executes ` selfdestruct ` , it can transfer its Ether to another contract or EOA, and this ` selfdestruct ` transfer can be forced even if the destination contract does not have the receive Ether function and the payable fallback function.
177
178
- If the application is built on the assumption that the Ether is ` 0 ` , it could be a bug.
178
179
179
- | Challenge | Note, Keywords |
180
- | ------------------------------------- | -------------- |
181
- | Capture The Ether: Retirement fund | |
182
- | [ Ethernaut: 7. Force] ( src/Ethernaut/ ) | |
180
+ | Challenge | Note, Keywords |
181
+ | ---------------------------------------------------------- | -- -------------- |
182
+ | [ Capture The Ether: Retirement fund] ( src/CaptureTheEther/ ) | integer overflow |
183
+ | [ Ethernaut: 7. Force] ( src/Ethernaut/ ) | |
183
184
184
185
### Large gas consumption by a contract callee
185
186
- A large amount of gas can be consumed by loops and recursion in ` call ` , and there may not be enough gas for the rest of the process.
@@ -222,14 +223,14 @@ Note:
222
223
- Since the state and the bytecodes of contracts are public, all variables, including private variables, are readable.
223
224
- Private variables are only guaranteed not to be directly readable by other contracts, but we, as an entity outside the blockchain, can read them.
224
225
225
- | Challenge | Note, Keywords |
226
- | ------------------------------------------------------------- | -------------- |
227
- | Capture The Ether: Guess the random number | |
228
- | [ Ethernaut: 8. Vault] ( src/Ethernaut/ ) | |
229
- | [ Ethernaut: 12. Privacy] ( src/Ethernaut/ ) | |
230
- | Cipher Shastra: Sherlock | |
231
- | 0x41414141 CTF: secure enclave | |
232
- | [ EthernautDAO: 1. PrivateData] ( src/EthernautDAO/PrivateData/ ) | |
226
+ | Challenge | Note, Keywords |
227
+ | ------------------------------------------------------------------ | -------------- |
228
+ | [ Capture The Ether: Guess the random number] ( src/CaptureTheEther/ ) | |
229
+ | [ Ethernaut: 8. Vault] ( src/Ethernaut/ ) | |
230
+ | [ Ethernaut: 12. Privacy] ( src/Ethernaut/ ) | |
231
+ | Cipher Shastra: Sherlock | |
232
+ | 0x41414141 CTF: secure enclave | |
233
+ | [ EthernautDAO: 1. PrivateData] ( src/EthernautDAO/PrivateData/ ) | |
233
234
234
235
### Reversing transactions
235
236
- Reversing the contents of a transaction or how the state has been changed by the transaction.
@@ -281,7 +282,7 @@ Note:
281
282
282
283
| Challenge | Note, Keywords |
283
284
| ------------------------------------------------------------------------------- | -------------------------- |
284
- | Capture The Ether: Token bank | |
285
+ | [ Capture The Ether: Token bank] ( src/CaptureTheEther/ ) | ERC-223, ` tokenFallback() ` |
285
286
| [ Ethernaut: 10. Re-entrancy] ( src/Ethernaut/ ) | |
286
287
| Paradigm CTF 2021: Yield Aggregator | |
287
288
| HTB University CTF 2020 Quals: moneyHeist | |
@@ -419,20 +420,20 @@ Note:
419
420
- It need not be due to overflow.
420
421
- The ` length ` property has been read-only since v0.6.0.
421
422
422
- | Challenge | Note, Keywords |
423
- | -------------------------------------------- | -------------- |
424
- | Capture The Ether: Mapping | |
425
- | [ Ethernaut: 19. Alien Codex] ( src/Ethernaut/ ) | |
426
- | Paradigm CTF 2021: Bank | |
423
+ | Challenge | Note, Keywords |
424
+ | -------------------------------------------------- | -------------- |
425
+ | [ Capture The Ether: Mapping] ( src/CaptureTheEther/ ) | |
426
+ | [ Ethernaut: 19. Alien Codex] ( src/Ethernaut/ ) | |
427
+ | Paradigm CTF 2021: Bank | |
427
428
428
429
### Constructor that is just a function by a typo (< Solidity 0.5.0)
429
430
- In versions before v0.4.22, the constructor is defined as a function with the same name as the contract, so a typo of the constructor name could cause it to become just a function, resulting in a bug.
430
431
- Since v0.5.0, this specification is removed and the ` constructor ` keyword must be used.
431
432
432
- | Challenge | Note, Keywords |
433
- | --------------------------------------- | -------------- |
434
- | Capture The Ether: Assume ownership | |
435
- | [ Ethernaut: 2. Fallout] ( src/Ethernaut/ ) | |
433
+ | Challenge | Note, Keywords |
434
+ | ----------------------------------------------------------- | -------------- |
435
+ | [ Capture The Ether: Assume ownership] ( src/CaptureTheEther/ ) | |
436
+ | [ Ethernaut: 2. Fallout] ( src/Ethernaut/ ) | |
436
437
437
438
### Storage overwrite via uninitialized storage pointer (< Solidity 0.5.0)
438
439
- Since v0.5.0, uninitialized storage variables are forbidden, so this bug cannot occur.
@@ -479,11 +480,11 @@ Note
479
480
| Dragon CTF 2020: Bit Flip 2 | 64-bit PoW |
480
481
481
482
## Cairo
482
- | Challenge | Note, Keywords |
483
- | --------------------------------------------------------------- | -------------- |
484
- | [ Paradigm CTF 2022: RIDDLE-OF-THE-SPHINX] ( src/ParadigmCTF2022/ ) | contract call |
485
- | [ Paradigm CTF 2022: CAIRO-PROXY] ( src/ParadigmCTF2022/ ) | overflow |
486
- | [ Paradigm CTF 2022: CAIRO-AUCTION] ( src/ParadigmCTF2022/ ) | Uint256 |
483
+ | Challenge | Note, Keywords |
484
+ | --------------------------------------------------------------- | ---------------- |
485
+ | [ Paradigm CTF 2022: RIDDLE-OF-THE-SPHINX] ( src/ParadigmCTF2022/ ) | contract call |
486
+ | [ Paradigm CTF 2022: CAIRO-PROXY] ( src/ParadigmCTF2022/ ) | integer overflow |
487
+ | [ Paradigm CTF 2022: CAIRO-AUCTION] ( src/ParadigmCTF2022/ ) | Uint256 |
487
488
488
489
## Solana
489
490
| Challenge | Note, Keywords |
0 commit comments