-
rev-basic-1,2리버싱 엔지니어링/드림핵 2022. 4. 2. 01:02
rev-basic-1 : https://dreamhack.io/wargame/challenges/15/
rev-basic-1
Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출
dreamhack.io
rev-basic-0와 문자열 비교하는 함수만 다름. 따라서, 문자열 비교함수로 먼저들어가봄
중첩 if문의 형태로 보이는 구조 발견
'C'와 비교 → 맞으면 그다음 문자 'ㅇ'와 비교 → .... 와 같이 진행됨
따라서, text view로 변경하여
차례로 나오는 문자들을 합쳐 정답 제출
정답
더보기DH{Compar3_the_ch4ract3r}
rev-basic-2 : https://dreamhack.io/wargame/challenges/16/
rev-basic-2
Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출
dreamhack.io
1과 마찬가지로, 문자열 비교함수로 들어가봄
① 구조와 1번 박스를 위주로 보면,
inc eax로 1씩 증가하는 반복문임을 알 수 있고,
rax, 12h를 통해 rax값이 12h(=18)번 비교함을 알 수 있고 이를 통해 문자열 길이를 17로 예측 가능하다.
(jnb는 크거나 같을 때 점프) → rax < 0x12
문자열 길이가 왜 18이 아니라 17일까?
마지막 비교는 ETB(End of Transmission Block-전송 블록 종결 문자) 이기 때문
② rcx에 aC를 대입하는데 aC를 클릭하면,
저장된 문자 확인 가능.
[rcx+rax*4]를 통해 4바이트씩 뛰면서 읽는 것을 알수있음
따라서 정답은,
더보기Comp4re_the_arr4y
후기)
기본 구조 파악하기 좋은 문제인듯, 정답을 통해 이 문제가 어떤걸 알려주고 싶어했는지 알 수 있어 좋았음.
코드를 잘보고 나중에 다른 코드 파악하는데 사용하면 좋을 것 같다.
'리버싱 엔지니어링 > 드림핵' 카테고리의 다른 글
rev-baic-7,8 (0) 2022.04.19 rev-basic-5,6 (0) 2022.04.09 rev-basic-4 (0) 2022.04.05 rev-basic-3 (0) 2022.04.05 rev-basic-0 (0) 2022.03.31