본문 바로가기

기타/워게임

[Dreamhack] rev-basic 2

https://dreamhack.io/wargame/challenges/16

 

rev-basic-2

Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출

dreamhack.io

1 - rev-basic 2 - reversing


x64로 빌드된 exe 파일 하나가 주어진다. x64 디버거로 분석해보았다.

 

메인 함수 로직은 이렇다. (우클릭-> find strings로 참조 문자열 찾으면 쉽게 찾을 수 있음)

시작할 때 Input을 받고, 첫 번째 breakpoint 부분에서 Correct/Wrong 판별을 한다. (검증 함수)

검증 결과에 따라서, 두 번째 breakpoint 부분에서 Correct를 출력할지 Wrong을 출력할지 결정한다.

 

문자열이 직접 들어있는 게 아니라서 find String으로 flag를 찾을 수는 없었다...

그래서 일단 검증 함수를 F7로 들어가서 분석해보기로 결정

 

반복적으로 한 글자씩 cmp를 수행하고 있는데, cmp 하는 부분을 보면 [rcx+rax*4]와 [edx] 값을 비교하는 게 나온다. 

edx에는 직전에 사용자의 입력값을 한 글자씩 잘라서 넣게 된다.

그리고 첫 번째 순회에서 rax 값은 0이므로, rcx에 있는 주소를 따라가면 비교하는 주소를 볼 수 있다!! (우클릭-> follow dump)

 

Comp4re_the_arr4y

합치면 이런 문자열이 된다.

 

 

정답 : DH{ Comp4re_the_arr4y}

'기타 > 워게임' 카테고리의 다른 글

[Dreamhack] Enc-JPG  (0) 2023.11.18
[Dreamhack] command-injection-1  (0) 2023.11.15
[Dreamhack] devtools-sources  (1) 2023.11.03
[Dreamhack] Snowing!  (0) 2023.11.03
[Dreamhack] FFFFAAAATTT  (1) 2023.10.08