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로 지정하고 게임에서 이겨봤다.