워게임/CTFlearn

[CTFlearn] Lazy Game Challenge - 포너블

SecurityMan 2022. 9. 25. 11:00

 

아주 재미있고 간단한 포너블 문제였다.

 

문제 설명을 읽어보면

 

John_123 이라는 사람이 만든 흥미로운 게임을 발견했는데

 

간단한 배팅게임이고, 이 게임을 pwn 해서 $1000000를 가져가 보라고 한다.

 

반응형

 

 

아래쪽에 접속할 수 있는 서버 주소가 나와있다.

 

보이는 것처럼 칼리 리눅스 터미널에서 그대로 입력하면 문제 서버에 접속이 가능하다.

 

 

접속하면 이런 화면이 나온다.

 

몇가지 게임의 규칙을 알려주는데

 

  • 최초 주어지는 금액은 500$
  • 컴퓨터가 제시하는 숫자가 무엇인지 맞춰야한다.
  • 컴퓨터가 제시하는 숫자의 범위는 1 - 10 이다.
  • 10번의 기회가 주어진다.
  • 사용자가 입력한 숫자가 10을 초과하더라도 기회는 계속 차감된다.

 

이정도가 이 게임의 룰이다.

 

이제 준비가 되었으니 아래쪽에 Y라고 입력해서 게임을 시작하면 된다.

 

 

시작하면 제일먼저 배팅화면이 나온다.

 

일단 과감하게 500달러 올인을 해봤다.

 

 

배팅을 하면 의미없는 로딩화면이 지나가고,

 

 

숫자를 입력하는 칸이 나오는데 시험삼아 5를 입력해봤다.

 

 

숫자가 틀리면 이렇게 Sorry Wrong Guess 라는 문구가 나온다.

 

 

어차피 기회가 10번이고, 숫자는 1 ~ 10 사이에서 나오니

 

5만 계속 입력해봤다.

 

그랬더니 몇번만에 바로 맞췄는데,

 

숫자가 맞으면 저렇게 배팅한 금액의 3배를 돌려준다.

 

500달러부터 시작해서 3배씩 올라가 1000000달러를 벌려면...

 

상당히 수고스러운 일이 될 것이다.

 

조금만 생각을 바꿔서, 이 게임의 규칙의 허점을 잘 이용하면 쉽게 클리어 할 수 있다.

 

 

일단 첫번째 허점은 바로

 

금액을 배팅할 때 음수도 입력이 가능하다는 것이다.

 

저렇게 마이너스를 앞에 붙혀서 무작정 큰 값을 한번 넣어봤다.

 

 

그럼 아무런 문제없이 다음단계로 게임이 진행되는것을 볼 수 있다.

 

두번째 허점은 10보다 큰 수를 입력해도 기회가 차감된다는 것이다.

 

고의적으로 10번의 기회를 틀리게 되면

 

가지고 있던 500 달러에서 내가 배팅한 만큼 빼갈것이다( - )

 

여기서 만약 - 100000000 원을 배팅했다면?

 

500 - (- 100000000) 가 되어서 오히려 돈이 나에게 더 들어오게 되는것이다.

 

 

이런식으로 Make a Guess 에 고의적으로 11만 계속 입력한다.

 

11은 당연히 컴퓨터가 제시하는 숫자 범위를 벗어나므로, 

 

그대로 10번의 기회를 다 날려 배팅금액이 차감될 것이다.

 

 

그럼 예상했던대로 마이너스로 입력한 금액이 플러스로 바뀌면서

 

오히려 잔액이 늘어난 것을 볼 수 있다.

 

 

조금 기다리면 아래쪽에 플래그도 같이 출력된다.

반응형