Wargame/Pwnable.kr

Pwnable.kr Blackjack 풀이

먼즈 2019. 8. 31. 19:51

간만에 돌아온 포너블케알 라업입니다. 원래 blackjack 문제 전에 coin1 문제가 있지만 이유모를 페이로드 실행 실패로 블랙잭부터 풀이하려고요

블랙잭 게임의 소스코드가 있는 사이트를 제시하네요. 들어가보면

? 존나 기네요 일단 서버부터 접속해서 뭐하는 게임인지 알아보겠습니다 근데 블랙잭이야 뭐 너무 대중적인 게임이라..

1 누르면 게임 시작, 2는 도움말 3은 게임 종료라네요. 저는 룰을 알고 있으므로 1을 눌렀습니다

현재 잔고는 500$인데, 뭐 설마 하고 훨씬 넘는 금액을 입력했습니다만 별다른 말이 없네요? 아마도 베팅에 관여하는 함수쪽에 문제가 있는걸로 생각하고 진행했고 게임을 졌습니다.

근데 제가 입력한 금액과는 다른 잔고가 출력됐고 그 위에는 묘하게 플래그같은 플래그가 출력됐습니다 사실 개뽀록ㅋ

걍 뽀록으로 플래그 얻은거는 공부에 도움이 안되므로 코드를 살펴보겠습니다

거의 800줄에 달하는 코드치고 함수명들이 다 명확해서 훑어보는 것만으로도 대충 뭐가뭔지 짐작이 오네요

쭉쭉 내리다보면 721줄부터 베팅 관여하는 함수가 위치하는 것을 확인할 수 있는데, if (bet > cash)에서 if문이 반복되지 않고 한번만 쓰이는 것이 취약점이네요. 제가 입력한 베팅금과 잔고 비교를 한 번밖에 안 하는 게 취약점인 겁니다. 근데 플래그를 출력하는 부분은 어디 있는 걸까요

 

암튼 1pt값하는 문제였습니다