Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

전체 213

Next.JS Javascript disable test

Next.JS 앱은 초기에 렌더링 된 HTML을 보낸다고 하는데 일반 React앱과는 어떻게 틀린지 확인해 보고자 합니다. 읽어보기만 하는 것보다 직접 테스트를 해봐야 직성이 풀립니다. 자 그럼 테스트해보겠습니다. 테스트 방식은 이렇습니다. create-react-app와 next.js의 테스트 앱을 각각 구동하고 Javascript이 비활성화 되어 있을 때와 활성화 되어 있을 때의 차이를 비교해 봅니다. 먼저 일반적인 react.js 앱(create-react-app) 아래 명령을 수행해서 테스트 진행 npx create-react-app my-app cd my-app npm start 그러면 다음과 같은 화면을 볼 수 있습니다. 그러면 Javascript를 비활성화하고 다시 페이지를 열어봅시다. 크롬..

Next.js 2022.02.28

Next.JS + AWS Amplify 맛만 보자 ㅎㅎ

Next.JS 부르는 React Framework이 있습니다. React Framework이니까 프론트 엔드... 그런데 서버 렌더링을 지원한다고? 음 ㅋㅋㅋ 뭔 소린지 모르겠습니다. 서버 렌더링 하려면 그냥 호스팅 가지고는 안되는거 아닌가? 처음에는 Firebase Function 이나 Lambda를 사용해야 하려나 하고 찾아봤는데 AWS Amplify Hosting에서 Next.JS 서버 측 렌더링 지원한다는 글을 보게 되었어요 느흐흐흐 못참지 새로 나온건 해봐야지 초간략하게 말씀드리자면 Next.js 로 코드 짜고 github에 올리면 Amplify Hosting이 알아서 배포합니다. 매우 쉽죠. 그럼 함 해보시지요~ 약 20-30분 정도면 따라하기가 완료될거에요. 시스템 요구사항 - Node.js..

Next.js/aws amplify 2022.02.28

Ethernaut 문제풀이 #13 - Gatekeeper One

13번 문제 Gatekeeper One 입니다. 이 문제는 13번, 14번에 one, twe 두 개로 구성되어 있네요. 두 레벨이 비슷한 성격인가 봅니다. Gatekeeper를 지나야 이 레벨을 통과할 수 있다고 합니다. 힌트로는 Telephone과 Token level에서 배운 것을 명심하라고 되어 있네요. 그리고 또 solidity 문서에서 gasleft()라는 특별한 함수를 배울 수 있다고 합니다. 2022.02.28 - [Smart contract/Ethernaut 문제풀이] - Ethernaut 문제풀이 #4 - Telephone Ethernaut 문제풀이 #4 - Telephone 레벨 4 Telephone입니다. 이번 문제도 Ownership을 탈취하는 문제고 역시 Beyond the con..

Ethernaut 문제풀이 #12 - Privacy

벌써 12번 문제입니다. 총 23개 문제니까 절반을 넘겼네요. 다른 길은 없습니다. ㅋㅋ 자 갑시다. 이 컨트랙트의 제작자는 저장소를 보호하는데 꽤나 신중했다고 하네요. 이 컨트랙트를 unlock하면 이길 수 있다고 합니다. 힌트로는 어떻게 storage가 작동하는지, 어떻게 parameter parsing 이 작동하는지 또 어떻게 casting이 작동하는지 이해하는 것이라 합니다. 팁을 하나 더 주네요. 난이도 8/10 짜리 문제라서 서비스가 좋군요. 메타마스크는 단지 상품이라는 것을 명심하고 메타마스크에 문제가 있느면 다른 툴을 사용하라고 합니다. 고급 난이도의 게임플레이는 Remix나 web3 provider를 사용한다고 합니다.....이미 그러고 있잖아... ㅅㅍ.. 코드를 봅시다~!!! cont..

Ethernaut 문제풀이 #11 - Elevator

11번 문제입니다. 이 엘레베이터는 당신이 빌딩의 꼭대기까지 올라가는 것을 허락하지 않는다는군요. 힌트로 두 문장을 주는데요. 가끔씩 솔리디티는 약속들을 지키기에는 좋지 못하다. 이 엘레베이터는 빌딩에서 사용될 것으로 예상된다. 무슨 소리일까요? 저도 잘 모르겠습니다. 코드부터 보시죠. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; interface Building { function isLastFloor(uint) external returns (bool);//빌딩 컨트렉트의 인터페이스 } contract Elevator {//엘레베이터 컨트렉트 bool public top; uint public floor; function goTo(uint _fl..

Ethernaut 문제풀이 #10 - Re-entrancy

10번 문제 re-entrancy입니다. Solidity 문서의 보안 측면 고려사항 페이지에서 거의 처음 부분에 나오는 거라 언제 이게 문제로 나오나 했는데 이제 나오네요. 그래도 힌트를 좀 보면 기존에 많은 문제풀이 처럼 다른 컨트랙트를 사용해 이 레벨을 클리어 해야 하겠네요. fallback은 거의 항상 이용되는 것 같은데 이 정도면 fallback을 없애야 하는거 아닌가 싶어요 ㅎㅎ 그리고 Throw/revert bubbling 이라는 힌트가 있는데 revert는 레벨9 King에서도 활용했었습니다. 자 하던대로 코드를 살펴보시죠. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import '@openzeppelin/contracts/math/S..

Ethernaut 문제풀이 #9 - King

Ethernaut 9번째 문제 King! 왕입니다. 이번 문제는 영어가 어렵네요. 이번 컨트랙트는 간단한 게임입니다. 왕이 되려면 기존의 상금보다 많은 돈을 입금해야 합니다. 그러면 그 돈은 기존 왕에게 보내지고 새로운 왕이 선출됩니다. 인스턴스를 제출할 때 이 레벨은 왕 권한을 다시 돌려받습니다. 오너라서 그런가? 암튼 self proclamation을 막으면 이 레벨을 이길 수 있다고 하..는군요.. 무슨 소리야!! 문제 이해를 못하겠네 큰일입니다. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract King { address payable king; //왕 uint public prize; //상 address payable publi..

Ethernaut 문제풀이 #7 - Force

7번 Ethernaut 문제 Force입니다. 목표는 컨트랙트의 돈을 0보다 크게 만드는 것입니다. ㅎㅎ 이상한 문제군요. 힌트로 제시된 것은 역시 fallback 함수이고 컨트랙트를 공격하는 가장 좋은 방법은 다른 컨트랙트라고 하네요. Beyond the console의 내용도 마찬가지입니다. 이번에도 Remix를 사용하여 문제를 풀어야 하나 봅니다. 코드를 봅시다. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract Force {/* MEOW ? /\_/\ / ____/ o o \ /~____ =ø= / (______)__m_m) */} ㅋㅋㅋㅋㅋ 뭐야 이게 ㅋㅋㅋ 아무것도 없습니다. 다른 컨트랙트로 fallback을 일으켜보면 뭔가 알..

Ethernaut 문제풀이 #6 - Delegation

6번째 문제 Delegation(위임)입니다. 역시 ownership을 탈취가 이번 레벨 클리어 조건입니다. 힌트를 살펴 봅시다. 먼저 Delegation call에 관한 문제라고 친절하게 알려주네요. solidity 문서의 delegatecall을 살펴보라고 합니다. Fallback과 Method ids도 도움이 된다고 하는데 method ids는 가 뭐였지? 생각이 안나네요. 공부하다보면 다시 생각 나겠죠 ㅎㅎ 자 인스턴스 생성하시고 코드를 한번 살펴 봅시다. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract Delegate { //Delegate 컨트렉트 정의 address public owner; constructor(address..

Ethernaut 문제풀이 #5 - Token

5번째 문제 Token입니다. 목표는 컨트렉트의 토큰을 해킹하는 것이구요. 20개의 토큰을 가지고 시작하는데요 20개보다 더 많은(매우 많이) 토큰을 확보하면 된다고 합니다. 힌트로는 "odometer가 뭔가요?" 음.... 주행계? 모르겠네요. 코드부터 봅시다. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract Token { mapping(address => uint) balances;//balances 변수 uint public totalSupply;//총 공급 변수 constructor(uint _initialSupply) public { balances[msg.sender] = totalSupply = _initialSupply; ..

반응형