분류 전체보기
-
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GatekeeperOne { address public entrant; modifier gateOne() { require(msg.sender != tx.origin); _; } modifier gateTwo() { require(gasleft() % 8191 == 0); _; } modifier gateThree(bytes8 _gateKey) { require(uint32(uint64(_gateKey)) == uint16(uint64(_gateKey)), "GatekeeperOne: invalid gateThree part one"); require(uint32(uint64(_gateKe..
[Ethernaut] Gatekeeper One// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GatekeeperOne { address public entrant; modifier gateOne() { require(msg.sender != tx.origin); _; } modifier gateTwo() { require(gasleft() % 8191 == 0); _; } modifier gateThree(bytes8 _gateKey) { require(uint32(uint64(_gateKey)) == uint16(uint64(_gateKey)), "GatekeeperOne: invalid gateThree part one"); require(uint32(uint64(_gateKe..
2023.02.09 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface Building { function isLastFloor(uint) external returns (bool); } contract Elevator { bool public top; uint public floor; function goTo(uint _floor) public { Building building = Building(msg.sender); if (! building.isLastFloor(_floor)) { floor = _floor; top = building.isLastFloor(floor); } } } 우리의 mission은 꼭대기 층을 맞춰야 하는 것 같다. 이 문제는..
[Ethernaut] Elevator// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface Building { function isLastFloor(uint) external returns (bool); } contract Elevator { bool public top; uint public floor; function goTo(uint _floor) public { Building building = Building(msg.sender); if (! building.isLastFloor(_floor)) { floor = _floor; top = building.isLastFloor(floor); } } } 우리의 mission은 꼭대기 층을 맞춰야 하는 것 같다. 이 문제는..
2023.02.09 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract MagicNum { address public solver; constructor() {} function setSolver(address _solver) public { solver = _solver; } /* ____________/\\\_______/\\\\\\\\\_____ __________/\\\\\_____/\\\///////\\\___ ________/\\\/\\\____\///______\//\\\__ ______/\\\/\/\\\______________/\\\/___ ____/\\\/__\/\\\___________/\\\//_____ __/\\\\\\\\\\\\\\\\..
[Ehthernaut] MagicNumber// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract MagicNum { address public solver; constructor() {} function setSolver(address _solver) public { solver = _solver; } /* ____________/\\\_______/\\\\\\\\\_____ __________/\\\\\_____/\\\///////\\\___ ________/\\\/\\\____\///______\//\\\__ ______/\\\/\/\\\______________/\\\/___ ____/\\\/__\/\\\___________/\\\//_____ __/\\\\\\\\\\\\\\\\..
2023.02.08 -
Backdoor-assembly Source Code // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; /* Lottery game: anyone can call pickWinner to get prize if you are lucky. Refers to JST contract backdoor. many rugged style's contract has similar pattern. Looks like theres is no setwinner function in contract, how admin can rug? */ contract ContractTest is Test { LotteryGame Lo..
[BlockChain] DeFiVulnLabs - Backdoor assemblyBackdoor-assembly Source Code // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; /* Lottery game: anyone can call pickWinner to get prize if you are lucky. Refers to JST contract backdoor. many rugged style's contract has similar pattern. Looks like theres is no setwinner function in contract, how admin can rug? */ contract ContractTest is Test { LotteryGame Lo..
2023.02.07 -
UnsafeCall Source Call // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; contract ContractTest is Test { TokenWhale TokenWhaleContract; function testUnsafeCall() public { address alice = vm.addr(1); address bob = vm.addr(2); TokenWhaleContract = new TokenWhale(); TokenWhaleContract.TokenWhaleDeploy(address(TokenWhaleContract)); console.log("TokenWhale balance:..
[BlockChain] DeFiVulnLabs - UnsafeCallUnsafeCall Source Call // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; contract ContractTest is Test { TokenWhale TokenWhaleContract; function testUnsafeCall() public { address alice = vm.addr(1); address bob = vm.addr(2); TokenWhaleContract = new TokenWhale(); TokenWhaleContract.TokenWhaleDeploy(address(TokenWhaleContract)); console.log("TokenWhale balance:..
2023.02.07 -
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import 'openzeppelin-contracts-06/math/SafeMath.sol'; contract Reentrance { using SafeMath for uint256; mapping(address => uint) public balances; function donate(address _to) public payable { balances[_to] = balances[_to].add(msg.value); } function balanceOf(address _who) public view returns (uint balance) { return balances[_who]; } functi..
[Ethernaut] Re-entrancy// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import 'openzeppelin-contracts-06/math/SafeMath.sol'; contract Reentrance { using SafeMath for uint256; mapping(address => uint) public balances; function donate(address _to) public payable { balances[_to] = balances[_to].add(msg.value); } function balanceOf(address _who) public view returns (uint balance) { return balances[_who]; } functi..
2023.02.07 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract King { address king; uint public prize; address public owner; constructor() payable { owner = msg.sender; king = msg.sender; prize = msg.value; } receive() external payable { require(msg.value >= prize || msg.sender == owner); payable(king).transfer(msg.value); king = msg.sender; prize = msg.value; } function _king() public view re..
[Ethernaut] King// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract King { address king; uint public prize; address public owner; constructor() payable { owner = msg.sender; king = msg.sender; prize = msg.value; } receive() external payable { require(msg.value >= prize || msg.sender == owner); payable(king).transfer(msg.value); king = msg.sender; prize = msg.value; } function _king() public view re..
2023.02.07 -
Privatedata Source Code // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; contract ContractTest is Test { Vault VaultContract; function testReadprivatedata() public { VaultContract = new Vault(123456789); bytes32 leet = vm.load(address(VaultContract), bytes32(uint256(0))); emit log_uint(uint256(leet)); // users in slot 1 - length of array // starting from slot..
[BlockChain] DeFiVulnLabs - PrivatedataPrivatedata Source Code // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; contract ContractTest is Test { Vault VaultContract; function testReadprivatedata() public { VaultContract = new Vault(123456789); bytes32 leet = vm.load(address(VaultContract), bytes32(uint256(0))); emit log_uint(uint256(leet)); // users in slot 1 - length of array // starting from slot..
2023.02.07