Tyojong
[The Ethernaut] Hello Ethernaut 본문
이 문제는 password변수의 값이 private설정이 아닌 public설정으로 되어있어 발생하는 취약점으로
변수 설정이 잘못 될 경우 민감한 정보가 노출될 수 있는 취약점이 발생한다는 것을 보여준다.
인스턴스 생성 후 개발자 도구의 console 탭을 이용해 문제를 해결하면 된다.
help()를 이용해 사용할 수 있는 함수 목록을 확인할 수 있다.
함수를 통해 여러 정보를 확인할 수 있고 await를 이용해 내가 원하는 값만 출력할 수 있다.
문제 설명에 contract.info() 또는 await contract.info()를 입력하라고 한다.
await contract.info() 를 입력하니 info1() 을 입력하라고 한다.
await contract.info1() 을 입력하니 이번에는 hello 파라미터를 넣은 info2() 를 입력하라고 한다.
await contract.info2("hello") 를 입력하니 infoNum 이 다음 info 메소드를 call 할 수 있는 숫자를 알려준다고 한다.
infoNum의 words에 42라는 숫자가 들어가 있다.
그렇다면 info42를 실행해보면 될 것 같다.
info42() 를 실행하니 theMethodName이 다음 메소드 이름이라고 한다.
theMethodName() 을 실행하니 method7123949 라는 메소드가 있다고 한다.
method7123949() 를 입력하니 password를 안다면 authenticate() 를 통해 제출 할 수 있다고 한다.
contract를 입력하니 password라는 메소드가 있어 실행해보니 password의 문자열이 출력되었다.
authenticate를 이용해 password값을 전달해주면 문제가 해결된다.