cgy12306

[pwnable.kr] blackjack 본문

Wargame/pwnable.kr

[pwnable.kr] blackjack

cgy12306 2020. 1. 27. 17:50

[blackjack]


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

해당 주소로가면 blackjack에 대한 코드가 있다.

블랙잭은 확률게임이기 때문에 18 이상이 되면 stay를 하고, 딜러가 버스트 되는 것을 기다리는 코드를 짰다.

 remote('pwnable.kr', 9009)

#context.log_level = 'debug'

r.recv()
r.sendline('Y')
r.recv()
r.sendline('1')

while True:
        print r.recvuntil('Cash: $')
        cash = int(r.recvline())
        r.recvuntil('Your Total is ')
        mycard = int(r.recvline())

        r.recvuntil('Enter Bet: $')
        print cash
        r.sendline('500')

        r.recv()
        r.sendline('H')

        while mycard <21:
                r.recvuntil('Your Total is ')
                mycard = int(r.recvline())

                r.recvuntil('The Dealer Has a Total of ')
                dealer = int (r.recvline())

                if dealer >21:
                        r.recv()
                        r.sendline('Y')
                        break

                if mycard == 21:
                        r.recv()
                        r.sendline('Y')
                        break

                if 'Please Enter Y for Yes or N for No' in r.recv():
                        r.sendline('Y')
                if mycard < 18:
                        r.sendline('H')
                else:
                        r.sendline('S')
                        r.recv()
                        r.sendline('Y')
                        break
        r.recv()
        r.sendline('Y')

r.interactive()

1000000이 넘어가는 순간 플래그가 뜬다.


다른풀이

취약한 코드만 보자면

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

베팅을 할 때 내가 소유한 돈보다 많은 금액을 베팅하게 되면 다시 베팅을 하게 되는데 그 값은 검사를 하지 않고 그대로 반환 한다.

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

[pwnable.kr] cmd1  (0) 2020.01.27
[pwnable.kr] lotto  (0) 2020.01.27
[pwnable.kr ] coin1  (0) 2020.01.26
[pwnable.kr] input  (0) 2020.01.26
[pwnable.kr] random  (0) 2020.01.26
Comments