이번 문제는 블랙잭 문제이다.
http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html
Simple Blackjack Program
Replies: 3 Last Post: 03-30-2007, 02:42 PM
cboard.cprogramming.com
문제의 링크로 접속하면 블랙잭 게임을 c언어로 구현해 놓은 소스 코드를 확인할 수 있다. 진짜 블랙잭 게임과는 다른 부분도 있지만 꽤나 보기 좋고 깔끔하게 구현해 놓았기 때문에 재미있었다.
문제에서 millionare 에게 flag를 준다고 했기 때문에 항상 이길수 있거나 비정상적인 방법으로 돈을 늘릴 수 있는 방법이 있는지를 유의하면서 코드를 살펴보다 취약점을 발견할 수 있었다.
betting() 함수에서 현재 가진 돈(cash)보다 베팅하려는 돈(bet)이 크다면 입력 오류로 다시 베팅 하게 하는데 이 때 두번째로 입력한 bet 변수는 따로 입력값 확인을 거치지 않는 걸 확인할 수 있다.
때문에 flag를 얻기 위해서 betting 하는 돈을 현재 가진 돈보다 현저히 많게 설정한 뒤 한번 게임을 이긴다면 백만장자가 되어 flag를 얻을 수 있다.
윈도우 cmd에서 문제 상의 nc 명령어를 입력하여 게임을 진행했다.
문제의 flag는 YaY I AM A MILLIONARE LOL 이다.
반응형
'IT(개발, 보안) > pwnable' 카테고리의 다른 글
[Pwnable 풀이] 14. lotto (0) | 2022.12.12 |
---|---|
[Pwnable 풀이] 12. mistake (0) | 2022.12.06 |
[Pwnable 풀이] 11. leg (4) | 2022.12.02 |
[Pwnable 풀이] 10. input (0) | 2022.12.02 |
[Pwnable 풀이] 9. random (2) | 2022.11.29 |