분류 전체보기 (20) 썸네일형 리스트형 이더넛 레벨2 풀기 이더넛 레벨2 풀기 레벨2. Fallout 목표 스마트컨트랙트의 owner에 대입된 주소를 내 주소로 변경한다. Full code // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import '@openzeppelin/contracts/math/SafeMath.sol'; contract Fallout { using SafeMath for uint256; mapping (address => uint) allocations; address payable public owner; /* constructor */ function Fal1out() public payable { owner = msg.sender; allocations[owner] = msg.va.. 이더넛 레벨1 풀기 이더넛 레벨1 풀기 01. Fallback 목표 1. 컨트랙트의 소유권을 가져온다. (owner 변경) 2. 컨트랙트의 잔고를 0으로 만든다. Full code // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import '@openzeppelin/contracts/math/SafeMath.sol'; contract Fallback { using SafeMath for uint256; mapping(address => uint) public contributions; address payable public owner; constructor() public { owner = msg.sender; contributions[msg.sender] = 1000.. 이더넛 시작 & 레벨 0 이더넛 시작 & 레벨 0 이더넛은 오픈제플린(OpenZeppelin)이 제공하는 서비스로 Web3 / 솔리디티(Solidity) 기반 게임입니다. 플레이어는 레벨을 통과하면서 다양한 스마트컨트랙트를 접하면서 보안 취약점을 공부할 수 있습니다. 이더넛 홈페이지 주소: https://ethernaut.openzeppelin.com/ Ethernaut ethernaut.openzeppelin.com Hello Ethernaut ! 0레벨 단계 'Hello Ethernaut'에서는 이더넛을 플레이하기 위해 기본적인 설정을합니다. 메타마스크 설치 개발자 툴 열기(F12) https://faucet.rinkeby.io/ 에서 테스트 이더리움 받기. 개발자 툴(F12)을 열면 이런 창이 나옵니다. help() 콘솔창.. 이더스캔 만들기 이더스캔 만들기 [목표] 이더스캔에서는 블록넘버, 트랜잭션해시, 어카운트 주소를 통해 데이터를 조회할 수 있다. 가나슈에서 테스트 환경의 블록체인을 만들고 브라우저에서 UI 환경을 구축하여 내가 만든 블록체인의 블록넘버, 트랜잭션해시 값을 넣고 해당 데이터를 조회할 수 있는 웹을 구축한다. npm install -g ganache-cli 가나슈가 설치되어있지 않다면 위 명령어로 프로젝트 어디서나 가나슈를 사용할 수 있도록 전역으로 설치한다. ganache-cli 가나슈 설치가 끝나면 위 명령어로 가나슈를 실행한다. 가나슈가 정상적으로 실행되면 위와 같이 10개의 계정이 생성된다. 리믹스 > Deploy & Run Transactions 탭에서 환경을 Web3 Provider로 설정한뒤 가나슈와 연동한다... 블록체인에 절대 지울 수 없는 메시지 남기기. 블록체인에 절대 지울 수 없는 메시지 남기기. 이더리움 트랜잭션 전송시 16 진수 데이터 필드가 있습니다. 여기에 데이터를 입력하면 트랜잭션 데이터 필드에 기록할 수 가 있습니다. 이 데이터를 포함하는 트랜잭션은 이더리움 블록체인의 블록에 기록되고 이 기록은 누군가에 의해 절대 지워지지 않습니다. 설령 작성자라고 할지라도, 혹은 이더리움을 만든 비탈릭일지라도 절대 지울수가 없습니다. 이를 영리하게 활용한 사람이 있습니다. 트랜잭션 해시: 0x2d6a7b0f6adeff38423d4c62cd8b6ccb708ddad85da5d3d06756ad4d8a04a6a2 블록높이: 5490403 특이한점은 보내는 사람과 받는 사람의 주소가 동일합니다. 즉 트랜잭션 받는 사람을 자신의 주소로 설정하고 트랜잭션을 발생시킨 .. [EIP-1559] 런던 하드포크 마침내 활성화 되다. [EIP-1559] 런던 하드포크 마침내 활성화 되다. 드! 디! 어! 한국시간 2021년 08월 05일 21시 33분경 블록높이 1296만 5천(12,965,000) 에서 마침내 EIP-1559가 활성화 되었습니다. 🚀 EIP-1559는 트랜잭션 발생시 내야하는 가스피를 줄이기 위한 개선안으로 EIP-1559가 적용되면 기본 가스피(Base fee)에 + 추가적인 팁을 지불하는 방식으로 변경됩니다. EIP-1559가 적용된 블록 12,965,000에서 블록 리워드를 보면 "2.813216092377312642 Ether (2 + 0.813216092377312642)" 기본 채굴 보상 2이더 + 0.813216092377312642가 블록 채굴 보상으로 발생했습니다. 이 블록 채굴 기본 보상으로 생성되.. uint 자료형의 허점을 노린 스마트컨트랙트 해킹 uint 자료형의 허점을 노린 스마트컨트랙트 해킹 [요약] 내가 다른 사람에게 돈을 입금하려면 나의 은행 잔고는 당연히 입금하려는 돈 보다 많아야한다. 동일한 의도로 타겟 스마트컨트랙트 내에 내가 보내려는 토큰이 나의 토큰 잔고 보다 많을 경우 전송을 할 수 있게 만든 코드가 있다. uint의 특성인 언더플로우를 이용해서 나의 토큰 잔고가 보내려는 토큰보다 적더라도 전송이 실행되도록 해킹해보고 이를 통해 스마트컨트랙트 코드 작성시 uint 자료형 변수의 특징과 보안 취약점을 알아보자. 타겟 스마트컨트랙트 'Token' 전체 코드 pragma solidity 0.6.0; contract Token { mapping(address => uint) balances; uint public num; constru.. 스마트컨트랙트 홀짝 해킹 #3 스마트컨트랙트 해킹 테스트 #3 [요약] 블록넘버의 홀수, 짝수를 맞추면 승리하는 스마트컨트랙트를 반드시 이길 수 있도록 해킹해보자. 해킹 타켓 스마트컨트랙트 "Test11" pragma solidity 0.8.6; contract Test11 { mapping(address => uint) public txCount; mapping(address => uint) public win; function gamble(bool _answer) public { uint blockNum = block.number; bool answer; if(blockNum % 2 == 1){ answer = true; } else if (blockNum % 2 == 0) { answer = false; } txCount[msg.. 이전 1 2 3 다음