[pwnable.kr] blackjack - 1 pt

2018. 5. 1. 20:49


이번에 풀어볼 녀석은 이녀석입니다.



문제가 기네요.. 백만장자에게 flag를 주겠다는 것 같습니다.

nc로 접속해보면 blackjack 게임을 할 수 있구요


돈 $500을 주고 베팅해서 컴퓨터를 이기면 돈을 받고 지면 돈을 잃습니다.


문제의 blackjack소스는 https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html

저 url에 있습니다.


취약점을 여러군데에서 발견할 수 있는데...


먼저 betting 부분입니다.


 


보시면 알겠지만....

현재 가진 돈보다 베팅금액이 많다면 다시 한번 Bet을 입력하라고 나오는데...

이게 반복문이 아니고 다시 한번만 묻고 이번에는 bet을 리턴해주기 때문에 한번 cash보다 많은 금액 입력햇다가 다시 입력하면

그걸 받아들입니다.


그래서 아래와 같이 아슬아슬하게 int형의 범위를 안넘는 돈을 배팅하면 한번 거절했다가 betting을 받습니다.



여기서 이제 이기면 돈이 저만큼 들어옵니다.



예이... 이기니까 플래그도 주넴...


또 다른 취약점은 bet한 금액의 부호를 검사하지않는다는 건데요.

만약 제가 마이너스 금액 -10000을 배팅했다가 지게되면


cash = cash - (-10000);

이 되서 결국 플러스가 됩니다.


 





굿뜨...

'Wargame > Pwnable.kr' 카테고리의 다른 글

[pwnable.kr] bof- 5 pt  (0) 2018.05.09
[pwnable.kr] collision - 3 pt  (0) 2018.05.02
[pwnable.kr] cmd1 - 1 pt  (0) 2018.05.01
[pwnable.kr] shellshock - 1 pt  (0) 2018.05.01
[pwnable.kr] mistake - 1 pt  (0) 2018.04.27

+ Recent posts