2024 | R3CTF | Blockchain
DAO
Description¶
rug me pls
Deploy.s.sol
Challenge.sol
R3Token.sol
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
|
R3Dao.sol
Solution¶
- To let the
R3Dao
execute a liquidity token transfer proposal, we need enough votes - Each voter's vote is a cached balance of tokens he holds, handled by the function
getPriorVotes
. The state variablebalanceCheckpoints
records all changes to user balances - In the function
getPriorVotes
, it will do a binary search on thebalanceCheckpoints[account]
if the block number of the last record is greater than the argumentblockNumber
. There may be multiple checkpoints with the same block number, but the search returns as soon as it encounters a checkpoint with the required block number - Therefore, we can perform a flashloan, and add some redundant operations so that the binary search returns the desired checkpoint during the flashloan
- After receiving the liquidity tokens, we can burn them all in exchange for ether and solve the challenge
Solve.s.sol
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
|
Flag¶
R3CTF{PL2-RE7-gO-PERC3N7S-oR-WE-WILl-d0xX-y0u-416baaeca611}
最后更新:
2024年10月3日 00:52:55
Contributors: