본문 바로가기
[ ★ ]Study/War Game

[Toddler's Bottle] pwnable.kr blackjack 풀이

by nroses-taek 2017. 9. 15.
반응형


소스코드는 양이 방대해서 생략!
백만장자가 되면 flag 준다고 합니다. .. .게임 열심히해서 이겨도 되겠죠 ..
 
핵심만 적어드리자면,
게임을 시작하거나 돈을 탕진했을 cash 500 채워줍니다. 이건 규칙이죠.
그리고 이겼을 때는, cash = cash+bet 베팅한 금액을 더해줍니다. 이기면 x2 x3 이런건 없어요.
마지막 핵심인 아래 코드입니다.
1
2
3
4
5
6
7
8
9
 if (bet > cash) //If player tries to bet more money than player has
 {
        printf("\nYou cannot bet more money than you have.");
        printf("\nEnter Bet: ");
        scanf("%d"&bet);
        return bet;
 }
 else return bet;
// End Function
cs
자신이 가지고 있는 돈보다 높은 금액을 베팅할 수는 없겠죠.
반복문을 통해서 매번 입력할 때마다 비교를 해주어야 하는데
if문으로 번만 걸러냅니다. 이렇게 되면 베팅금액이 커도 베팅을 있다는 거죠.
무슨소리냐구요?
bet 금액이 내가 가지고 있는 cash 보다 크다면
"You cannot bet more money than you have" 라는 문구를 띄워줍니다.
그리고 bet변수에 베팅금액을 입력해주죠?  그리고 그것을 retrun 해줍니다.
때문에 큰 액수를 2번 입력하면 베팅을 할 수 있다는 거죠.

500 케쉬가 있습니다.
베팅을 100 하겠습니다.

if문을 통해 어쩔 없이 그냥 return 값을 베팅하게 됩니다.
똑같이 100 했습니다.

승리했습니다.


flag를 얻게되었습니다.
:D

차분한 마음으로 중요 소스코드를
찝어내라는 하나의 문제였네요


반응형

댓글