| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- network
- IAM Federation
- 프로그래머스
- 침입 차단 시스템(IPS)
- AWS 인프라 분석
- AWS 3 Tier Architecture
- AWS 보안 사고 사례 모음
- 리버싱
- python
- AWS 보안 아키텍처 분석
- AWS Active Directory
- AWS 인프라 아키텍처
- AWS 침해 사고 사례 분석
- C
- terraform
- AWS IAM Role
- programmers
- operating system
- reversing
- AWS 아키텍처 분석
- reversing.kr
- dreamhack
- 네트워크
- TryHackMe
- AWS 사고 사례 분석
- 운영체제
- AWS
- AWS 침해사고 사례 분석
- Amazon S3
- 드림핵
- Today
- Total
lhywk 님의 블로그
[Dreamhack] WinDbg Exercise 1 본문
문제
"Correct!"를 출력하는 입력을 찾아주세요! 해당 입력이 문제의 플래그가 됩니다.
문제 풀이
WinDbg를 활용해서 문제를 풀이해볼게요.
먼저 정적분석을 하기 위해 IDA를 사용할게요.
이번 문제에는 심볼 파일인 pdb 파일도 같이 주어져있기 때문에 IDA에서 pdb를 로드할 필요가 있어요.
1. 정적 분석
File -> Load file -> PDB file

심볼을 로드하면 디컴파일 결과가 깔끔하게 표기됩니다.
코드를 살펴보면
7라인 : 23바이트 크기의 문자열 입력받기
8라인 : flag 생성
9라인 : 입력값과 플래그 값 0x17 만큼 비교 맞으면 -> correct, 틀리면 -> wrong
본 문제에서의 디버깅 목표는 flag 변수에 담긴 값만 확인하면 되요.
memcmp()이 실행되는 주소를 알아볼게요.

그래프로 바꾼다음 스페이스 바를 눌러서 텍스트 형식으로 전환하면 가상주소를 확인할수 있어요.
여기서 알아야할 개념은 가상 주소, 상대 가상 주소, 이미지 베이스입니다.
1. 가상 주소
프로그램이 메모리에 올라갔을 때 운영체제가 제공하는 논리적인 주소
2. 이미지 베이스
프로그램 실행 시 메모리에 적재되는 프로그램 데이터 -> 이미지
이 이미지가 적재되는 시작 주소 -> 이미지 베이스
3. 상대 가상 주소
이미지 베이스로부터 얼마나 떨어져 있는지 나타내는 주소
가상 주소 = 이미지 베이스 + 상대 가상 주소
0x14001380은 WinDbg의 가상 주소와 달라요. 그래서 우리는 이미지 베이스를 0으로 바꾸어서 상대 가상 주소를 구합니다.

Edit -> Segment -> Rebase program -> value값 0으로 설정
2. 동적 분석 (WinDbg)

이제 WinDbg로 넘어와서 바이너리를 실행 시켜볼게요.

lm 명령어로 image base주소를 획득합니다.
0x7ff62bbd0000으로 되어 있네요.

bp 00007ff6`2bbd0000+0x1380 명령으로 이미지 베이스 + 상대 가상 주소를 입력하여 실제 memcmp() 함수가 있는 가상 주소에 중단점을 설정합니다.

g : 중단점까지 실행

아무값이나 입력합니다.

디스어셈블리 뷰를 보면 memcmp 함수 실행에 멈춰있는 모습이에요.
x64에서는 함수 호출 규약이 rcx, rdx, r8, r9 순으로 인자를 전달해요.
memcmp 함수의 2번째 인자가 플래그 값이였으니 rdx 레지스터 내의 값을 확인해볼게요.

da : ASCII 문자열 형식으로 Null을 마주칠때까지 메모리 값을 출력
플래그를 획득합니다.
'Reversing > Dreamhack' 카테고리의 다른 글
| [Dreamhack] rev-basic-4 (1) | 2025.12.16 |
|---|---|
| [Dreamhack] WinDbg Exercise 2 (0) | 2025.12.15 |
| [Dreamhack] rev-basic-3 (0) | 2025.12.13 |
| [Dreamhack] patch (1) | 2025.12.13 |
| [Dreamhack] randzzz (0) | 2025.11.21 |