lhywk 님의 블로그

[Dreamhack] Simple Patch Me 본문

Reversing/Dreamhack

[Dreamhack] Simple Patch Me

lhywk 2025. 12. 24. 19:06

문제

이 문제는 실제 시간으로 365일이 흐르면 플래그를 출력하는 프로그램이 주어집니다.

프로그램을 패치하여 플래그를 획득하세요!

문제 풀이

해당 바이너리는 elf입니다.

리눅스 환경에서 실행시켜 보겠습니다.

바이너리 실행

실행시켜봤는데 플래그를 1년 뒤에 준답니다.

IDA로 분석해보겠습니다.

string 확인

아까 본 문자열이 있는 곳으로 넘어가 보겠습니다.

xref

x을 눌러 참조하고 있는 주소인 main으로 가보겠습니다.

main 디컴파일

코드를 보겠습니다.

dword_40404C가 0부터 0x2237까지 반복되면서 플래그 값인 a2가 연산되고 있습니다.

그런데 7 라인에 sleep 함수를 호출하여 3600초를 자서 너무 오래 자고 있습니다.

이를 무력화하면 플래그를 획득할 수 있을 것 같습니다.

pwndbg를 이용하여 풀이해보겠습니다.

 

main 주소 확인

main의 주소를 먼저 확인합니다.

브레이크 포인트 설정

b *0x40127B로 중단점을 설정합니다.

r을 눌러 실행시키면 main의 어셈블리가 보입니다.

n을 눌러 쭉 내려가 보겠습니다.

mov edi, 0xe10으로 edi에 값을 넣고

sleep 함수를 호출하고 있습니다.

어셈블리 패치

해당 라인($PC)을 mov edi, 0으로 패치해 줍니다.

그리고 c를 눌러 끝까지 실행해 보겠습니다.

플래그 획득

sleep 함수가 0초로 무력화되어 플래그를 획득합니다.

'Reversing > Dreamhack' 카테고리의 다른 글

[Dreamhack] Check Return Value  (0) 2025.12.26
[Dreamhack] Check Function Argument  (0) 2025.12.26
[Dreamhack] Simple Crack Me 2  (0) 2025.12.23
[Dreamhack] Simple Crack Me  (0) 2025.12.23
[Dreamhack] rev-basic-8  (0) 2025.12.23