| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- reversing
- C
- AWS IAM Role
- reversing.kr
- AWS
- AWS 사고 사례 분석
- dreamhack
- 리버싱
- AWS 침해사고 사례 분석
- IAM Federation
- Amazon S3
- AWS 침해 사고 사례 분석
- operating system
- network
- python
- AWS Active Directory
- terraform
- TryHackMe
- AWS 보안 아키텍처 분석
- AWS 보안 사고 사례 모음
- AWS 3 Tier Architecture
- AWS 인프라 아키텍처
- 운영체제
- AWS 아키텍처 분석
- 침입 차단 시스템(IPS)
- 프로그래머스
- programmers
- AWS 인프라 분석
- 드림핵
- 네트워크
- Today
- Total
lhywk 님의 블로그
[Dreamhack] randzzz 본문
문제
랜덤한 값을 맞혀 get_flag() 함수를 호출하세요! 플래그는 68자리입니다.
해당 문제 파일 chall은 elf 파일이에요.
pwndbg를 사용하여 분석해 보겠습니다.
문제 풀이
1. IDA를 통한 정적분석
IDA를 통해 해당 파일의 소스 코드를 디컴파일 해봅니다.

15~16번째 줄에 sleep 함수를 호출하는데 rand() + 1 만큼 잠을 자네요.
나중에 동적분석을 하는데 방해할 수 있으니 값을 바꿔야 할 것 같아요.
20번째 줄에 scanf을 호출해서 값을 받는데 이 값과 두 개의 if문의 조건이 맞아야 flag를 획득할 수 있어요.
21~29, 30~38 줄은 두 개의 if문이 있어요. 조건에는 0~9 사이의 랜덤값과 우리가 입력한 값이 맞아야 for문을 통해 0~27 반복, 0~35 반복 총 64글자에 DH{}까지 포함해서 문제에서 말한 68글자의 flag가 나오겠네요.
seed 없이 rand() 함수를 호출했으므로 리턴값이 실행에 상관없이 동일하겠네요.
2. pwndbg을 이용한 동적분석

IDA에서는 주소가 RVA 값으로 나와있어요.
RVA는 프로그램이 메모리에 로딩될 때의 상대적인 오프셋이에요.
동적 분석을 위해 실제 주소인 VA을 알아내야 해요.
pwndbg를 통해 info proc mapping 명령어로 imagebase 주소를 알아내고 Rebase를 해서 실제 VA를 먼저 알아냅니다.
Step 1. Sleep( ) 우회


*b 0x5555555552F6 : 잠을 재우는 코드 부분에 브레이크 포인트를 설정합니다.
r : 중단점까지 프로그램 수행을 합니다.

eax에 값을 넣고 sleep 함수를 호출하고 있어요.

eax값을 1로 설정해서 1초만 자게 할게요.
n : 다음으로 수행합니다.
Step2. 첫 번째 if문 우회


scanf 함수를 호출하고 값을 입력하라고 하네요. 1을 입력해 보겠습니다.

계속 실행하다 보면 cmp 문이 나오고 5-1(입력값)으로 비교하고 있어요.

p $rbp-0xc : rbp-0xc의 주소 값을 출력합니다.
set *0x7ffffffffda14=5 : set을 통해 메모리 주소에 5를 저장합니다.
Step 3. 두 번째 if문 우회

반복문을 20번넘게 계속 넘길 순 없으니 다음 if문 쪽으로 바로 이동해 볼게요.

*b 0x555555555407 : 중단점을 설정합니다.
c : 다음 중단점까지 실행합니다.

eax에 rbp - 0xc 주소에 있는 값을 넣고
cmp로 3과 5를 비교하고 있네요.

p $rbp-0xc : rbp - 0xc의 주소값을 출력합니다.
set *0x7ffffffffda14=3 : 해당 메모리 주소에 3을 저장합니다.

두번째 if문도 우회가 됐고 프로그램을 끝까지 수행시키면 flag를 획득합니다.
'Reversing > Dreamhack' 카테고리의 다른 글
| [Dreamhack] rev-basic-4 (1) | 2025.12.16 |
|---|---|
| [Dreamhack] WinDbg Exercise 2 (0) | 2025.12.15 |
| [Dreamhack] WinDbg Exercise 1 (0) | 2025.12.15 |
| [Dreamhack] rev-basic-3 (0) | 2025.12.13 |
| [Dreamhack] patch (1) | 2025.12.13 |