Skip to content

Latest commit

 

History

History
49 lines (33 loc) · 1.3 KB

File metadata and controls

49 lines (33 loc) · 1.3 KB

A-Ethernaut-CTF

Day6 2024.09.04

Force

题目:

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)

補充

selfdestruct