목록web3 (31)
Tyojong
개요심각도 : High언어 : Solidity프로토콜 : Terplayer BVT Staking & Distribution취약점 유형 : Logic Bug이 리포트는 Terplayer BVT Staking & Distribution 프로토콜에서 Level 5 계정을 가진 사용자가 시스템의 12% 커미션을 우회할 수 있는 취약점에 대해 설명한다. Level 5 계정은 일반적으로 recipientComission 주소로 12%의 커미션을 내야한다.악의적인 사용자는 새 계정을 만든 뒤, 부모 계정을 자신의 Level 5 계정으로 지정한다.새 계정에서 자산을 입금하면 이 과정에서 12% 커미션이 본인 Level 5 계정으로 지급된다.결국 실질적으로 본인은 2% 커미션만 내고, 12%에 해당하는 자산을 추가로 획..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
문제 설명이 문제는 Fallback, receive 함수가 잘못 설정되었을 때 발생할 수 있는 취약점을 학습할 수 있다.이 문제를 해결하기 위해서는 컨트랙트의 소유권을 획득하고 컨트랙트 잔고를 0으로 만든다.(모든 이더를 빼낸다.) 코드 분석배포자를 owner로 설정하고 owner의 초기 기여금을 1000 ETH로 설정한다. contribute() 함수는 0.001 ETH 미만의 금액만 받을 수 있고 받은 기여금을 저장한다.호출자의 기여금이 소유자의 기여금보다 많으면 owner(소유권)을 이전한다. 호출자의 현재 기여금을 알려주는 읽기 전용 함수이다. 호출자가 소유자인지 확인하는 제한자이다. 제한자가 적용되어 있는 함수로 소유자만 호출 가능하다.소유자 주소를 payable 타입으로 캐스팅하고 (ETH를 ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
이 문제는 password변수의 값이 private설정이 아닌 public설정으로 되어있어 발생하는 취약점으로변수 설정이 잘못 될 경우 민감한 정보가 노출될 수 있는 취약점이 발생한다는 것을 보여준다.인스턴스 생성 후 개발자 도구의 console 탭을 이용해 문제를 해결하면 된다.help()를 이용해 사용할 수 있는 함수 목록을 확인할 수 있다. 함수를 통해 여러 정보를 확인할 수 있고 await를 이용해 내가 원하는 값만 출력할 수 있다. 문제 설명에 contract.info() 또는 await contract.info()를 입력하라고 한다. await contract.info() 를 입력하니 info1() 을 입력하라고 한다. await contract.info1() 을 입력하니 이번에는 hello ..
보호되어 있는 글입니다.
Foundry란?Foundry는 Foundry organization에 의해 개발된 스마트 컨트랙트 개발 툴체인이다.Rust로 작성되었으며 안정적이고 빠른 성능을 가진다.툴체인 내에 여러 툴을 통해 테스트넷 실행부터 패키지 매니저, 배포 및 디버깅까지 다양한 기능을 제공한다.Foundry ToolsForge : 작성한 스마트 컨트랙트를 빌드, 테스트, 배포하는 기능을 가진다. git의 submodules 기능을 바탕으로 종속성을 관리하는 기능을 제공해 git 서버 위에 올라가 있는 스마트 컨트랙트들을 쉽게 추가하고 관리할 수 있다.Cast : 이더리움 RPC (Remote procedure call) 요청을 직접 보낼 수 있는 툴이다. 자신이 배포한 스마트 컨트랙트를 호출해보거나 트랜잭션을 보내는 등의 ..
