Day6 2024.09.04
题目:
Some contracts will simply not take your money ¯_(ツ)_/¯
The goal of this level is to make the balance of the contract greater than zero. 有些合約根本不會拿走你的錢 ́_(ツ)_/́
目標:是使合約餘額大於零。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Force { /*
MEOW ?
/\_/\ /
____/ o o \
/~____ =ø= /
(______)__m_m)
*/ }
解題:
一開始看到這題的時候真的蒙了,有借住 google 的力量發現,原來有有一個
function , selfdestruct
用途毀面合約將剩餘代幣轉移。
補充有寫得很清楚在 v0.8.18 版本中不建議使用(但是還是可以使用?)。
只要毀滅合約這些錢就可以指定到我想要的地址,所以只要合約裡面有寫到 selfdestruct 就可以想想是不是有機會。
流程: 建立一個 attack 的合約,裡面有 1 ether,然後將合約的地址傳入 Force 合約的 selfdestruct function。
POC:
[Force.t.sol](../A-Ethernaut-CTF/POC/test/7/Force.t.sol)