[ethernaut] (18 Magic Number)카테고리 없음2025. 5. 30. 10:33
Table of Contents

문제코드
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MagicNum {
address public solver;
constructor() {}
function setSolver(address _solver) public {
solver = _solver;
}
/*
____________/\\\_______/\\\\\\\\\_____
__________/\\\\\_____/\\\///////\\\___
________/\\\/\\\____\///______\//\\\__
______/\\\/\/\\\______________/\\\/___
____/\\\/__\/\\\___________/\\\//_____
__/\\\\\\\\\\\\\\\\_____/\\\//________
_\///////////\\\//____/\\\/___________
___________\/\\\_____/\\\\\\\\\\\\\\\_
___________\///_____\///////////////__
*/
}
솔버 코드
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "forge-std/Script.sol";
import "../src/MagicNumber.sol";
contract Attack {
constructor() {
assembly {
mstore(0, 0x602a60805260206080f3)
return(0x16, 0x0a)
}
}
}
contract POC is Script {
function run() public {
vm.startBroadcast();
Attack atk = new Attack();
MagicNum target = MagicNum(0x39E84B73390B3d2e14BbcacF4F1E857d4e750fc6);
target.setSolver(address(atk));
vm.stopBroadcast();
}
}
아직 evm어셈은 잘 모르겠다...
@Burnnnnny :: Burnnnnny Blog
내가 보고 내가 참고하려고 만든 블로그
틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다.