Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- AWS 보안 아키텍처 분석
- 리버싱
- dreamhack
- terraform
- AWS
- network
- programmers
- AWS 보안 사고 사례 모음
- IAM Federation
- 네트워크
- 침입 차단 시스템(IPS)
- AWS 침해 사고 사례 분석
- AWS 아키텍처 분석
- AWS 3 Tier Architecture
- C
- 운영체제
- 드림핵
- AWS 침해사고 사례 분석
- 프로그래머스
- AWS 사고 사례 분석
- TryHackMe
- reversing.kr
- python
- operating system
- AWS IAM Role
- Amazon S3
- reversing
- AWS Active Directory
- AWS 인프라 분석
- AWS 인프라 아키텍처
Archives
- Today
- Total
lhywk 님의 블로그
[Dreamhack] My Favorite Fruit 본문
문제
이 채팅봇은 여러분들이 좋아하는 과일을 알고 싶어 해요.
과연 여러분들은 봇으로부터 플래그를 알아낼 수 있을까요?
문제 풀이
1. 정적 분석

해당 바이너리를 실행하면 반복하면서 어떤 과일을 제일 좋아하는지 물어봅니다.
IDA를 통해 코드를 분석해 보겠습니다.

아까 봤던 문자열을 참조하고 main을 따라가 보겠습니다.

코드를 살펴보면 우리의 과일 입력값을 받고 do while 루프를 사용하여 반복하고 있습니다.

코드를 마저 보면 while 루프를 탈출하기 위해선 v4 값이 31이 되어야 하고 플래그를 출력해 줍니다.
이때 if문 내의 v4을 연산하는 코드들이 있습니다.
각 과일의 if문마다 v4의 OR 연산을 수행하게 되면 v4가 31이 됩니다.
그렇다면 각 과일을 알맞게 처음부터 끝까지 한 번씩 입력해 주면 되겠습니다.

하지만 strawberry를 입력하면 else 문의 문자열이 출력됩니다.

문제는 이 %9입니다.
strawberry는 10자이기 때문에 scanf에서 잘리게 됩니다.
다양한 방법이 있겠지만 저는 %s로 바꿔 패치를 해보겠습니다.
HxD를 통해 패치해 보겠습니다.
2. 패치

먼저 rodata 섹션에서 %9s의 문자열이 있는 오프셋을 찾아냅니다.

HxD로 해당 오프셋으로 이동합니다.

%9s에 해당되는 16진수가 보이고 이 값을
0x25 0x73 0x00 0x00으로 바꿔 %s로 만들겠습니다.

패치를 하고 다시 바이너리를 실행해 보겠습니다.

플래그를 획득합니다.
'Reversing > Dreamhack' 카테고리의 다른 글
| [Dreamhack] rev-basic-7 (0) | 2026.01.27 |
|---|---|
| [Dreamhack] flag printer (0) | 2026.01.26 |
| [Dreamhack] Recover (0) | 2026.01.18 |
| [Dreamhack] Easy Assembly (0) | 2026.01.10 |
| [Dreamhack] r-xor-t (0) | 2026.01.01 |