문제 코드는 아래 주소로 들어가면 열람할 수 있습니다.
http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html
코드의 취약점은 음수에 대한 필터링이 없다는 것입니다. 아래 코드를 보면 bet에 정수를 입력받는데 음수를 입력받는다면 음수는 항상 cash 보다 작을 수 밖에 없습니다. 따라서 음수를 입력하고 게임에서 진다면 음수만큼 돈을 잃게되는데 음수에 마이너스를 붙이면 양수가 되므로 백만달러를 쉽게 벌 수 있습니다.
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;
}
그림과 같이 베팅 금액으로 -1000501을 입력하는 경우 게임에서 질 경우 500 -(-1000501) = 1000001이 되므로 플래그를 획득할 수 있습니다.
'시스템 해킹 > pwnable.kr' 카테고리의 다른 글
[Pwnable.kr] cmd2 (0) | 2021.07.29 |
---|---|
[Pwnable.kr] lotto (0) | 2021.07.28 |
[Pwnable.kr] coin1 (0) | 2021.07.28 |
[Pwnable.kr] shellshock (0) | 2021.07.27 |
[Pwnable.kr] input (0) | 2021.07.27 |
댓글