워게임 문제 및 풀이 ( out of money )

Moon Junsu·2025년 6월 17일

오늘 풀어볼 문제는 out of money 이다.

문제는 다음과 같고 문제 파일은 단순 로직이다.

웹 사이트를 통해 분석을 해보겠다.

가장먼저 로그인을 하게 되면 다음과 같이 나의 자산을 확인할 수 있다.

거래소에서는 DHH빌리기와 교환소가 있다.

2000코인을 빌려보도록 하겠다.

그리고 FLAG 구매가 있는데,

코드 로직은 위와 같다.

현재 가진 DHH코인이 1000이상이면서 빚이 없어야 한다.

현재는 빚이 2000코인이고, 자산도 2000코인이므로 FLAG 구매를 눌러도 얻을 수 없다.

이제 dream 유동성 풀을 확인해본다.

여기서는 담보를 통해 DHD를 빌릴 수 있다. 담보는 DHC를 가지고 있으면 낼 수 있다.

취약점은 여기서 발생하였다.

담보 기준 0.8 만큼의 DHD를 빌릴 수 있는데, 이 때 반복작업을 통해 담보보다도 더 큰 금액을 빌릴 수 있게 된다.

DHH를 DHC로 바꾼다음 담보를 통해 한번 빌려보도록 하겠다.

1000코인을 담보로 잡았고, 1000DHD를 빌려보겠다.

담보가 부족하다고 한다.

0.8 이였으므로, 800만큼을 빌려보았다.

DHD 코인이 800이 되었다.

한번 더 빌려보겠다.

담보는 1000인데, 빌린 코인은 1600이 된 기이한 현상이 발생하였다.

2번을 더 빌려 총 3200의 DHD를 DHH로 바꾸었다.

나는 이제 이 빌린 2000코인을 갚는다.

-2000을 입력하면 갚을 수 있다.

빌린 DHH도 없고, DHH를 1200이나 갖고 있어 FLAG를 구매할 수 있게 되었다.

FLAG가 구매되었다.

profile
보안 인프라 엔지니어

0개의 댓글