Wargame/pwnable.kr

[Pwnable.kr] blackjack 풀이 (1pt)

bjloed 2020. 7. 21. 22:44

풀이

blackjack.c의 코드가 어어어어엄청 긴 관계로 취약점이 발견된 부분의 코드만 적어보도록 하겠다.

int betting() //Asks user amount to bet
{
 printf("\n\nEnter Bet: $");
 scanf("%d", &bet);
 
 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

음... 딱 감이 오죠?

내가 배팅한 금액이 현재 가지고 있는 돈보다 크면 재입력을 받는 함수인데... 마지막에 bet 값을 리턴한다.

결국은, 2번째 입력 때는 훨씬 큰 돈을 배팅할 경우에도 정상적으로 bet 값이 리턴되기 때문에 bet 값을 조작할 수 있다.

 

그래서 bet 값을 약 99999999로 지정하고 게임에서 이겨봤다.