Hey~!~! C로 구현된 이 블랙잭 게임을 확인해봐!! (참고문헌)

내 플래그는 억만장자한테 줄거야..! 얼마나 많은 돈을 딸 수 있을까?? (돈만 있으면 다 되는 세상…..) 그리고 nc포트가 나와있다. 이것도 아까 coin1문제랑 비슷하게 코드를 짜서 푸는 문제인 것 같다. 일단 접속을 해보자.

예쁜 화면이 나온다~!~!

1 => 게임 시작 2 => 게임 룰 3 => 게임 나가기이다.

룰부터 확인해볼까?

…. 그냥 우리가 알고 있는 흔한 블랙잭 룰이다. 게임을 시작해보자.

게임 화면이다. 현재 500달러가 있다…. 이 게임을 이기기 위해서 그냥 무작정 하면 절대 억만장자가 될 수 없을 것 같았다. 따로 바이너리가 없어서 코드짜는 것 같았는데 아닌가보다. 아까 참고문헌도 같이 첨부해줬으니까 확인해보자.

https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html

여기 확인해보기!!

이거 비슷한 문제를 풀었던 것 같은데 딜러가 가지고 있는 수가 아마 rand함수로 정해질 것이고 이를 예측해서 배팅을 하면 될 것이다. 그러면 그 부분을 확인해보자.

randcard()함수가 있다. 여기부터 볼까?

int randcard() //Generates random card
{
      
                
     srand((unsigned) time(NULL)); //Generates random seed for rand() function
     random_card = rand()%4+1;
      
     if(random_card==1)
     {   
         clubcard();
         l=k;
     }
      
     if(random_card==2)
     {
         diamondcard();
         l=k;
     }
      
     if(random_card==3)
     {
         heartcard();
         l=k;
     }
          
     if(random_card==4)
     {
         spadecard();
         l=k;
     }    
     return l;
} // End Function   

내가 가진 카드는 seedtimerand함수로 정해진다.

그리고 다른 함수를 쭉 보다가 betting함수를 봤더니….

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

이렇게 되어있다매우 취약한 것을 볼 수 있다. 1pt밖에 안되는 이유가 있었다.. 100m밖에서도 보이듯이 처음에 현재 잔고보다 더 많이 배팅하게 되면 if문에 걸리게 되는데 다시 배팅할 때에도 현재 금액보다 많이 배팅하는 것에 대한 필터링이 없다..!!! 이건 뭐 코드 짤 필요도 없겠는데..? 그냥 어마무시하게 많은 금액을 배팅하고 몇 번 하다가 얻어걸리면 풀릴 것 같다

이렇게 몇 번 게임해주면

바로 플래그가 나온다어렵게 생각할 필요가 전혀 없는 엄청나게 매우 쉬운 문제였다

플래그는 YaY_I_AM_A_MILLIONARE_LOL

'pwnable > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] cmd1  (0) 2019.08.10
[pwnable.kr] lotto  (0) 2019.06.26
[pwnable.kr] coin1  (0) 2019.06.25
[pwnable.kr] shellshock  (0) 2019.02.27
[pwnable.kr] mistake  (0) 2019.02.24

+ Recent posts