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 |