728x90
이번 포스트에서는 Pwnable의 blackjack 문제에 대해 다루겠다.
## 문제 해석 :
해당 문제는 블랙잭 게임 문제이다. 총 100만 달러를 획득하면 flag를 획득할 수 있는 것으로 보인다.
또한 문제에서 제공된 링크를 통해 해당 프로그램의 소스 코드를 확인할 수 있었고, 그 코드 중의 취약점을 통해 문제를 해결할 수 있다.
링크 : http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html
## 문제 풀이 :
문제 코드 중 일부는 다음과 같다.
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
해당 함수는 베팅값을 설정하는 함수이다. 만약 설정된 베팅값이 캐시 보다 많으면 재설정을 하도록 되어있지만 잘못된 값에 대한 예외 처리를 따로 설정하고 있지 않아서 해당 취약점을 활용하여 문제를 풀 수 있다.
## 최종 결과 :
### 공격 문 : 1000000, 1000000
### 실행 결과 :
Flag = YaY_I_AM_A_MILLIONARE_LOL
'Wargame > Pwnable' 카테고리의 다른 글
Pwnable (14. cmd1) (0) | 2022.07.12 |
---|---|
Pwnable (13. lotto) (0) | 2022.07.11 |
Pwnable (11. coin1) (0) | 2022.07.09 |
Pwnable (10. shellshock) (0) | 2022.07.08 |
Pwnable (9. mistake) (0) | 2022.07.07 |