[Ethernaut] Level 1

ShinboTinBBO·2025년 2월 11일

블록체인

목록 보기
4/4

시작

첫 게임이다.

설명을 읽어보고, contract를 시작하기 위해 Get new instance를 클릭한다.

위의 사진과 같이, 처음에는 지갑에 잔고가 부족하여 거래요청을 받아들일 수가 없었다.

그래서 seopolia faucet을 검색하여 구글 클라우드alchemy에서 수금을 했다.

결국, 트랜젝션을 수락할 수 있었다.

이를 etherscan에서 보면 다음과 같은 정보로 이루어진 것을 확인할 수 있다.

복습

Mastering Ethereum을 읽으며 배운 정보들을 확인할 수 있는 좋은 경험이었다.

From, To 정보를 통해서, 버튼을 누름으로써 내가 출제자가 설정한 주소로 데이터를 전송했다는 것을 알 수 있다.

또한 Transaction Action 정보를 통해, 나는 작성된 코드 중 Create Level Instance 함수를 시행한 것임을 알 수 있었고, 이 함수의 프로토타입의 해시값의 첫 네 바이트는 0xdfc86b17이다.

따라서 데이터 페이로드의 첫 8글자가 동일하게 존재하는 것을 확인할 수 있다.

해당 함수는 함수 인자로 address라는 자료 유형을 가지는데 그 값이 앞의 8글자 외의 정보이다.

문제 풀이

help()

설명을 읽어보니 contract가 현 레벨의 인스턴스라고 한다.
누른 버튼도 인스턴스 받기였으니 이를 이용해 보자.

await ethernaut

일단은 이 명령어로 컨트랙트의 큰 내용들을 정리할 수 있다.

await contract

contract가 사용할 수 있는 매서드가 쭉 나열되어 있다.

await contract.info()
이것으로 컨트랙트의 정보를 확인해보자.

하라는 대로 잘 했더니, 비밀번호를 검증할 수 있는 매서드를 알려준다.

결국은 비밀번호를 알아내야하는 것인데...

보니까 패스워드도 매서드로 있었다 ㅋㅋㅋㅋㅋ

비밀번호를 검증해주니 아래와 같이 요청이 발생했다.

그리고 이 요청은 Authenticate 함수에 의한 것임을 알 수 있었다.

submit instance를 통해서 레벨1을 통과한 것을 확인할 수 있다.

profile
지상 최강의 해적

0개의 댓글