문제를 들어가면 뜨는 창이다.
코드창에 들어갔다가 너무 길어서 서버부터 접속하는 것으로 하였다.
nc 명령어를 통해 접속한다.
1을 누르면 게임 시작, 2는 도움말, 3은 게임 종료이다.
현재 잔고는 $500인데 넘는 금액을 입력했더니 아래 나오는 말이 반복된다.
입력한 금액과는 다르게 출력이 되었고 플래그가 반복된다.
코드를 살펴보니 위와 같은 함수가 보였다. 베팅에 관여하는 함수인데, if(bet>cash)에서 if문이 반복되지 않고 한 번만 쓰이는 것이 취약점인 것을 알 수 있다. 입력한 베팅금과 잔고 비교를 한 번밖에 안 하는게 취약점인 것이다.
잘못된 베팅값을 통해 다시 베팅 값을 받을 때 예외처리를 하지 않는다.
따라서, 두 번째 입력을 받을 때 임의의 betting 값 설정이 가능하다.
flag를 얻기 위해서 100만 달러 이상의 부자가 되어야 하니 100만 달러를 베팅한 후 게임에서 이기면 된다.
betting 함수를 이용해서 $100000를 베팅하였다.
딜러와의 게임에서 이기면 FLAG를 얻을 수 있다.
FLAG : YaY_I_AM_MILLIONNARE_LOL
'Pwnable > Pwnable CTF' 카테고리의 다른 글
[Pwnable.kr] Toddler's Bottle_cmd1 (0) | 2021.05.19 |
---|---|
[Pwnable.kr] Toddler's Bottle_lotto (0) | 2021.05.11 |
[Pwnable.kr] Toddler's Bottle_coin1 (0) | 2021.05.05 |
[Pwnable.kr] Toddler's Bottle_shellshock (0) | 2021.05.05 |
[Pwnable.kr] Toddler's Bottle_mistake (0) | 2021.04.27 |