blackjack 문제이다.


(blackjack)



문제 화면은 이렇다.


(문제 화면)



여기서 C코드를 주었다.
하지만 나는 보지않았다.. 그렇게 먼길을 걷기 시작했다...

문제에 접속을 하면 게임을 할 수 있다.



(게임 룰)



의외로 재밌었다.

부자한테 플래그를 주겠다는 거니 돈을 버는게 목적이구만?

파이썬 코드로 확률을 계산하여 풀기로 했다.
카드 배열을 만든 후 하나씩 pop 하는 방식이다.



(확률 계산 함수)



(게임 함수)



실제로 내가 배팅을 50퍼센트에 걸것이니, 확률도 50 이상이면 h (go)를 외치게 하였다.
그런데 자꾸 지는거다.. 와이어 샤크로 확인해보니..



(같은 숫자?)



같은 카드들이 반복적으로 온다
뭐지? 카드 배열 쓰는게 아니었어???

그렇다면 나도 꼼수로 나간다.
같은 수가 반복적으로 오니까 21에 근접하게 반복하는 것이다.
5가 오면 그 다음 카드도 5일 것이니 3번만 h를 해주면 20이 되고 내가 이길 확률이 커지는 것이다.
그래도 가끔 숫자가 바뀌니까 그거 고려해서 승률을 어림잡아 1/5로 잡고 배팅도 1/5 로 주었다.



(블랙잭 핵 코드)



(블랙잭함수)



자! 실행하니 돈이 쌓여간다.



(난 부자!!)



그런데 마지막에 뜬금포로 파산했다고 중단된다. 돈이 이렇게나 많은데...
(프로그램 오류일 것이다. 더 이상 큰 수를 가질 수 없는거 같다.)
와이어샤크로 확인해보니
100만 달라가 넘는 순간부터 이상한 문구가 딸려온다.



(이상한 문구?)



flag에 입력해본다.




(문제 해결!)



* 문제를 다 풀이한 후 다른 사람들의 알고리즘은 어떻게 되나 싶어서(내가 꼼수를 썻기 때문에)
확인해보니 코드의 결함을 이용한 방법이었다...
앞으로는 문제에서 주어진 것들을 잘 확인해봐야겠다.

'WarGame > 500 Project' 카테고리의 다른 글

(55/500) pwnable.kr - uaf  (0) 2017.07.12
(54/500) pwnable.kr - cmd1  (0) 2017.07.12
(52/500) pwnable.kr - coin1  (0) 2017.07.12
(51/500) pwnable.kr - shellshock  (0) 2017.07.11
(50/500) pwnable.kr - mistake  (0) 2017.07.10

+ Recent posts