System&Write up/Pwnable.kr

[pwnable.kr] Toddler's Bottle - blackjack

Jubil 2017. 12. 15. 19:14
반응형

[pwnable.kr] Toddler’s Bottle - blackjack






millionares. 백만장자에게 flag를 준다고 합니다.




들어가면 화려한 아스키아트를 볼 수 있습니다.




게임 진행, 룰 확인, 게임 나가기 3가지 기능이 있습니다. 룰을 보고 게임을 좀 해봤는데 1승 4패였습니다ㅜㅜ



각설하고, 링크 들어가보면 긴 C 코드가 있습니다. 아스키아트가 많아서 빠르게 읽을 수 있었습니다.



랜덤 카드 생성, 게임 실행 후 이러쿵 저러쿵 초기 셋팅하는 부분을 지나고 났는데 이상한 부분을 발견했는데요.



베팅 금액이 가진 돈보다 큰가? 검사해서 베팅 금액이 크다면 입력을 다시 받고, 다시 검사해야하는 게 맞습니다. 하지만 이 코드에서는 if문 안에서 다시 입력을 받기 때문에 가지고 있는 돈보다 많은 양의 돈을 베팅할 수 있는 것입니다.




이겼을 때 원래 가진 돈 + 베팅 금액을 받기 때문에, 크게 베팅하고 이긴다면 백만장자가 될 수 있습니다.




그럼 딜러의 Hit, Stay 알고리즘까지 알았으니, 운만 따라주면 백만장자가 되어 flag를 얻을 수 있겠네요.





보유 금액보다 큰 금액을 베팅합니다.




처음에는 거절하지만, 두 번째 베팅은 값에 상관없이 베팅됩니다.




운도 따라줍니다. 결과는?



이겼습니다. 이제 flag가 나올까요?




flag가 위에 나오게 됩니다. 감사합니다.

반응형