Skip to content

Commit a0f9259

Browse files
committed
update readme + rename dir
1 parent 3cc8957 commit a0f9259

File tree

6 files changed

+27
-11
lines changed

6 files changed

+27
-11
lines changed

README.md

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ If there are any incorrect descriptions, I would appreciate it if you could let
1212

1313
**Table of Contents**
1414
- [Ethereum](#ethereum)
15-
- [Contract basics](#contract-basics)
15+
- [Smart contract basics](#smart-contract-basics)
1616
- [EVM puzzles](#evm-puzzles)
1717
- [Misuse of `tx.origin`](#misuse-of-txorigin)
1818
- [Weak sources of randomness from chain attributes](#weak-sources-of-randomness-from-chain-attributes)
1919
- [ERC-20 basics](#erc-20-basics)
2020
- [Storage overwrite by `delegatecall`](#storage-overwrite-by-delegatecall)
2121
- [Context mismatch in `delegatecall`](#context-mismatch-in-delegatecall)
2222
- [Integer overflow](#integer-overflow)
23-
- [Non-executable Ether transfers to contracts](#non-executable-ether-transfers-to-contracts)
24-
- [Forced Ether transfers to contracts via `selfdestruct`](#forced-ether-transfers-to-contracts-via-selfdestruct)
23+
- [Ether transfer failures for non-payable contracts](#ether-transfer-failures-for-non-payable-contracts)
24+
- [Forced Ether transfers to non-payable contracts via `selfdestruct`](#forced-ether-transfers-to-non-payable-contracts-via-selfdestruct)
2525
- [Large gas consumption by contract callees](#large-gas-consumption-by-contract-callees)
2626
- [Forgetting to set `view`/`pure` to interface and abstract contract functions](#forgetting-to-set-viewpure-to-interface-and-abstract-contract-functions)
2727
- [`view` functions that do not always return same values](#view-functions-that-do-not-always-return-same-values)
@@ -30,6 +30,7 @@ If there are any incorrect descriptions, I would appreciate it if you could let
3030
- [Reversing states](#reversing-states)
3131
- [Reversing transactions](#reversing-transactions)
3232
- [Reversing EVM bytecodes](#reversing-evm-bytecodes)
33+
- [EVM assembly logic bugs](#evm-assembly-logic-bugs)
3334
- [EVM bytecode golf](#evm-bytecode-golf)
3435
- [Jump-oriented programming](#jump-oriented-programming)
3536
- [Gas optimization](#gas-optimization)
@@ -81,7 +82,7 @@ Note:
8182
- If an attack is only valid for a particular version of Solidity and not for the latest version, the version is noted at the end of the heading.
8283
- To avoid notation fluctuations, EVM terms are avoided as much as possible and Solidity terms are used.
8384

84-
### Contract basics
85+
### Smart contract basics
8586
- 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.
8687

8788
| Challenge | Note, Keywords |
@@ -97,6 +98,7 @@ Note:
9798
| [0x41414141 CTF: sanity-check](src/0x41414141CTF/) | contract call |
9899
| [Paradigm CTF 2022: RANDOM](src/ParadigmCTF2022/) | contract call |
99100
| [DownUnderCTF 2022: Solve Me](src/DownUnderCTF2022/) | |
101+
| [LA CTF 2024: remi's-world](src/LACTF2024/) | |
100102

101103
### EVM puzzles
102104
- Puzzle challenges that can be solved by understanding the EVM specifications.
@@ -182,17 +184,17 @@ Note:
182184
| [Capture The Ether: Token whale](src/CaptureTheEther/) | subtraction |
183185
| [Ethernaut: 5. Token](src/Ethernaut/) | subtraction |
184186

185-
### Non-executable Ether transfers to contracts
187+
### Ether transfer failures for non-payable contracts
186188
- Do not create a contract on the assumption that normal Ether transfer (`.send()` or `.transfer()`) can always be executed.
187189
- If a destination is a contract and there is no receive Ether function or payable fallback function, Ether cannot be transferred.
188-
- However, instead of the normal transfer functions, the `selfdestruct` described below can be used to force such a contract to transfer Ether.
190+
- However, instead of the normal transfer functions, the `selfdestruct` described in the next section can be used to force such a contract to transfer Ether.
189191

190192
| Challenge | Note, Keywords |
191193
| -------------------------------------------------------------------------- | -------------- |
192194
| [Ethernaut: 9. King](src/Ethernaut/) | |
193195
| [Project SEKAI CTF 2022: Random Song](src/ProjectSekaiCTF2022/RandomSong/) | Chainlink VRF |
194196

195-
### Forced Ether transfers to contracts via `selfdestruct`
197+
### Forced Ether transfers to non-payable contracts via `selfdestruct`
196198
- If a contract does not have a receive Ether function and a payable fallback function, it is not guaranteed that Ether will not be received.
197199
- 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.
198200
- If the application is built on the assumption that the Ether is `0`, it could be a bug.
@@ -215,7 +217,7 @@ Note:
215217

216218
| Challenge | Note, Keywords |
217219
| ----------------------------------------- | -------------- |
218-
| [Ethernaut: 11. Elevator](src/Ethernaut/) | |
220+
| [Ethernaut: 11. Elevator](src/Ethernaut/) | interface |
219221

220222
### `view` functions that do not always return same values
221223
- Since `view` functions can read state, they can be conditionally branched based on state and do not necessarily return the same value.
@@ -260,7 +262,6 @@ Note:
260262
| [darkCTF: Secret Of The Contract](src/DarkCTF/) | |
261263
| [DownUnderCTF 2022: Secret and Ephemeral](src/DownUnderCTF2022/) | |
262264

263-
264265
### Reversing EVM bytecodes
265266
- Reversing a contract for which code is not given in whole or in part.
266267
- [evm.codes](https://www.evm.codes/) is very useful.
@@ -285,6 +286,17 @@ Note:
285286
| [EKOPARTY CTF 2022: Byte](src/EkoPartyCTF2022/) | stack tracing |
286287
| [EKOPARTY CTF 2022: SmartRev](src/EkoPartyCTF2022/) | memory tracing |
287288
| [Numen Cyber CTF 2023: HEXP](src/NumenCTF/) | previous block hash == gas price % 2^24 |
289+
| [BlazCTF 2023: Maze](src/BlazCTF2023/) | |
290+
| [BlazCTF 2023: Jambo](src/BlazCTF2023/) | |
291+
| [BlazCTF 2023: Ghost](src/BlazCTF2023/) | |
292+
| [Curta: Lana](src/Curta/20_Lana/) | LLVM |
293+
294+
### EVM assembly logic bugs
295+
- Logic bugs in assemblies such as Yul
296+
297+
| Challenge | Note, Keywords |
298+
| ------------------------------------------------------- | -------------- |
299+
| [Project SEKAI CTF 2024: Zoo](src/ProjectSekaiCTF2024/) | `Pausable` |
288300

289301
### EVM bytecode golf
290302
- These challenges have a limit on the length of the bytecode to be created.
@@ -485,6 +497,7 @@ Note:
485497
| Challenge | Note, Keywords |
486498
| ------------------------------------------------------- | -------------- |
487499
| [DownUnderCTF 2022: Private Log](src/DownUnderCTF2022/) | |
500+
| [DiceCTF 2024: Floordrop](src/DiceCTF2024/) | Geth |
488501

489502
### Back-running
490503
- MEV-Share can be used to create bundled transactions to back-run.
@@ -554,15 +567,15 @@ Note:
554567
| [Paradigm CTF 2022: RESCUE](src/ParadigmCTF2022/) | |
555568
| Paradigm CTF 2022: JUST-IN-TIME | |
556569
| Paradigm CTF 2022: 0XMONACO | |
557-
| [BalsnCTF 2022](src/BalsnCTF2022/) | initialize, `_safeTransferFrom`, `CREATE2` |
570+
| [BalsnCTF 2022: NFT Marketplace](src/BalsnCTF2022/) | initialize, `_safeTransferFrom`, `CREATE2` |
558571
| [Numen Cyber CTF 2023: LenderPool](src/NumenCTF/) | flash loan |
559572
| [Numen Cyber CTF 2023: GOATFinance](src/NumenCTF/) | check sum address |
560573
| [SEETF 2023: Pigeon Vault](src/SEETF2023/) | EIP-2535: Diamonds, Multi-Facet Proxy |
561574
| [corCTF 2023: baby-wallet](src/CorCTF2023/) | missing `from != to` check |
562575

563576
## Bitcoin
564577
Note
565-
- Including challenges of Bitcoin variants whose transaction model is Unspent Transaction Output (UTXO).
578+
- This section includes challenges of Bitcoin variants whose transaction model is Unspent Transaction Output (UTXO).
566579

567580
### Bitcoin basics
568581

src/Curta/20_Lana/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Curta: Lana
2+
3+
Writeup: https://x.com/vinami/status/1728482477965213760
File renamed without changes.

0 commit comments

Comments
 (0)