분류 전체보기
-
안뇽안뇽~~ 이 몸 등장!! 오랜만이야~~ 항상 내가 오면 다들 좋아하지?? 무슨 주제를 들고 올까?? 이두박근 하지 않아?? 이번에는 어떤 주제냐면 BlockChain audit을 하면서 대부분 해커들이 자금 세탁을 하기 위해서 Tornado cash 서비스를 많이 사용하더라고~~ 그래서 도대체 이게 뭐지?? 궁금한 마음에 포스팅 해봐또 ㅋㅋㅋ 시작해 볼까?? Tornado Cash 토네이도 캐시랑 뭘까?? 휘몰아치는 돈?? ㅎㅎ Tornado Cash란 이더리움 블록체인 기반의 zero-knowledge proof를 기반으로 구축된 분산형 비구속 개인정보 보호 솔루션이야. 무슨 말인지 모르겠지?? zero-knowledge proof(영지식 증명)이란 암호학에서 어떤 사람이 나에게 "rhenus는 해..
[BlockChain] DeFi Protocol - Tornado Cash안뇽안뇽~~ 이 몸 등장!! 오랜만이야~~ 항상 내가 오면 다들 좋아하지?? 무슨 주제를 들고 올까?? 이두박근 하지 않아?? 이번에는 어떤 주제냐면 BlockChain audit을 하면서 대부분 해커들이 자금 세탁을 하기 위해서 Tornado cash 서비스를 많이 사용하더라고~~ 그래서 도대체 이게 뭐지?? 궁금한 마음에 포스팅 해봐또 ㅋㅋㅋ 시작해 볼까?? Tornado Cash 토네이도 캐시랑 뭘까?? 휘몰아치는 돈?? ㅎㅎ Tornado Cash란 이더리움 블록체인 기반의 zero-knowledge proof를 기반으로 구축된 분산형 비구속 개인정보 보호 솔루션이야. 무슨 말인지 모르겠지?? zero-knowledge proof(영지식 증명)이란 암호학에서 어떤 사람이 나에게 "rhenus는 해..
2023.02.10 -
Bypass iscontract Source Code // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; contract ContractTest is Test { Target TargetContract; FailedAttack FailedAttackContract; Attack AttackerContract; TargetRemediated TargetRemediatedContract; constructor() { TargetContract = new Target(); FailedAttackContract = new FailedAttack(); TargetRemediatedContract = new Tar..
[BlockChain] DeFiVulnLabs - Bypass iscontractBypass iscontract Source Code // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "forge-std/Test.sol"; contract ContractTest is Test { Target TargetContract; FailedAttack FailedAttackContract; Attack AttackerContract; TargetRemediated TargetRemediatedContract; constructor() { TargetContract = new Target(); FailedAttackContract = new FailedAttack(); TargetRemediatedContract = new Tar..
2023.02.10 -
// SPDX-License-Identifier: MIT pragma solidity ^0.5.0; import '../helpers/Ownable-05.sol'; contract AlienCodex is Ownable { bool public contact; bytes32[] public codex; modifier contacted() { assert(contact); _; } function make_contact() public { contact = true; } function record(bytes32 _content) contacted public { codex.push(_content); } function retract() contacted public { codex.length--; }..
[Ethernaut] Alien Codex// SPDX-License-Identifier: MIT pragma solidity ^0.5.0; import '../helpers/Ownable-05.sol'; contract AlienCodex is Ownable { bool public contact; bytes32[] public codex; modifier contacted() { assert(contact); _; } function make_contact() public { contact = true; } function record(bytes32 _content) contacted public { codex.push(_content); } function retract() contacted public { codex.length--; }..
2023.02.10 -
안뇽안뇽~~ 오랜만이야!! 오늘은 무엇을 들고 왔을지 궁금하징?? 바로바로 NFT라는 고야!! 바로 진행해 보까?? NFT(Non Fungible Token) NFT는 대체 불가능한 토큰이라는 뜻으로 블록체인에 저장된 데이터의 단위야 NFT 같은 경우는 영구적으로 블록체인에 남아 있어서 각기 고유성을 가지고 있어 NFT같은 경우는 사진, 비디오, 오디오 및 기타 유형의 디지털 파일을 나타내는데 각 소유자들은 저작권과 소유권 증명을 해야 해. 그래서 사본은 아예 인정되지 않지 신기하즤??? NFT 같은 경우는 블록체인에 저장된 데이터의 단위야 그래서 암호화 토큰처럼 작동하지만 다른 암호화폐와 달리 상호교환이 불가능 하지 그럼 이런 NFT가 왜 이리 인기가 많아지게 된 것일까?? 그 이유는 바로 메타버스 때..
[BlockChain] NFT안뇽안뇽~~ 오랜만이야!! 오늘은 무엇을 들고 왔을지 궁금하징?? 바로바로 NFT라는 고야!! 바로 진행해 보까?? NFT(Non Fungible Token) NFT는 대체 불가능한 토큰이라는 뜻으로 블록체인에 저장된 데이터의 단위야 NFT 같은 경우는 영구적으로 블록체인에 남아 있어서 각기 고유성을 가지고 있어 NFT같은 경우는 사진, 비디오, 오디오 및 기타 유형의 디지털 파일을 나타내는데 각 소유자들은 저작권과 소유권 증명을 해야 해. 그래서 사본은 아예 인정되지 않지 신기하즤??? NFT 같은 경우는 블록체인에 저장된 데이터의 단위야 그래서 암호화 토큰처럼 작동하지만 다른 암호화폐와 달리 상호교환이 불가능 하지 그럼 이런 NFT가 왜 이리 인기가 많아지게 된 것일까?? 그 이유는 바로 메타버스 때..
2023.02.10 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Recovery { //generate tokens function generateToken(string memory _name, uint256 _initialSupply) public { new SimpleToken(_name, msg.sender, _initialSupply); } } contract SimpleToken { string public name; mapping (address => uint) public balances; // constructor constructor(string memory _name, address _creator, uint256 _initialSup..
[Ethernaut] Recovery// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Recovery { //generate tokens function generateToken(string memory _name, uint256 _initialSupply) public { new SimpleToken(_name, msg.sender, _initialSupply); } } contract SimpleToken { string public name; mapping (address => uint) public balances; // constructor constructor(string memory _name, address _creator, uint256 _initialSup..
2023.02.09 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Privacy { bool public locked = true; uint256 public ID = block.timestamp; uint8 private flattening = 10; uint8 private denomination = 255; uint16 private awkwardness = uint16(block.timestamp); bytes32[3] private data; constructor(bytes32[3] memory _data) { data = _data; } function unlock(bytes16 _key) public { require(_key == bytes..
[Ethernaut] Privacy// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Privacy { bool public locked = true; uint256 public ID = block.timestamp; uint8 private flattening = 10; uint8 private denomination = 255; uint16 private awkwardness = uint16(block.timestamp); bytes32[3] private data; constructor(bytes32[3] memory _data) { data = _data; } function unlock(bytes16 _key) public { require(_key == bytes..
2023.02.09 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import 'openzeppelin-contracts-08/token/ERC20/ERC20.sol'; contract NaughtCoin is ERC20 { // string public constant name = 'NaughtCoin'; // string public constant symbol = '0x0'; // uint public constant decimals = 18; uint public timeLock = block.timestamp + 10 * 365 days; uint256 public INITIAL_SUPPLY; address public player; constructor(add..
[Ethernaut] Naught Coin// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import 'openzeppelin-contracts-08/token/ERC20/ERC20.sol'; contract NaughtCoin is ERC20 { // string public constant name = 'NaughtCoin'; // string public constant symbol = '0x0'; // uint public constant decimals = 18; uint public timeLock = block.timestamp + 10 * 365 days; uint256 public INITIAL_SUPPLY; address public player; constructor(add..
2023.02.09 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GatekeeperTwo { address public entrant; modifier gateOne() { require(msg.sender != tx.origin); _; } modifier gateTwo() { uint x; assembly { x := extcodesize(caller()) } require(x == 0); _; } modifier gateThree(bytes8 _gateKey) { require(uint64(bytes8(keccak256(abi.encodePacked(msg.sender)))) ^ uint64(_gateKey) == type(uint64).max);..
[Ethernaut] Gatekeeper Two// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GatekeeperTwo { address public entrant; modifier gateOne() { require(msg.sender != tx.origin); _; } modifier gateTwo() { uint x; assembly { x := extcodesize(caller()) } require(x == 0); _; } modifier gateThree(bytes8 _gateKey) { require(uint64(bytes8(keccak256(abi.encodePacked(msg.sender)))) ^ uint64(_gateKey) == type(uint64).max);..
2023.02.09