[pwnable.kr] blackjack

이동화·2025년 7월 21일

random 카드 생성할 때 time함수로 시드 값은 랜덤으로 잘 설정해서 이 부분을 조작할 수는 없다

사용자의 입력값을 받는 부분은
Y/N, 게임 시작할 때 1, 2, 3받기, hit/stay 여부, 그리고 금액 베팅할 때 뿐이다.

flag 출력 조건은 보유 금액이 백만 달러를 넘어가면 되는데, 입력 부분에서 검증 안된 부분을 찾아보면

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

베팅 금액이 단순히 cash보다 큰지만 확인하고, 이기거나 졌을 때 단순히 그 값을 더하거나 뺀다.

음수를 넣어도 잘 동작하기 때문에 이를 노려서 overflow를 발생시켜 flag 조건을 만족하게 만들 수 있다.

Woohoo_I_am_now_a_MILL10NAIRE!

profile
notion이 나은듯

0개의 댓글