문제
이 문제는 사용자에게 문자열 입력을 받아
정해진 방법으로 입력값을 검증하여
correct 또는 wrong을 출력하는 프로그램이 주어집니다.
해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요.
획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.
풀이과정
rev_basic_0 풀이과정이 '풀이'가 아니긴 하지만 어쨌든 풀었으니까
구글에 나온 writeup몇 개를 봤다.
(여전히 이해는 안 된다)
RIP든 뭐든 일단 오른쪽버튼 눌러서 문자열 참조를 하면
correct 찾을 수 있길래 그렇게 해봤다!
들어옴
test eax, eax 결과 eax == 0 -> wrong이기 때문에
eax != 0이어야 한다.
그 위의 함수(7FF6634F1000)에 바로 들어가 보았다.
여기서 rax는 0이었고, rcx는 rsp+8의 값을 가짐
만약에 je로 가지 않으면 그냥 return으로 가게 되는데,
이때 eax != 0이기 때문에 무조건 je로 가야 함
따라서 cmp의 결과는 모두 '같다'여야 한다!
Compar3_the_ch4ract3r
'étude > reverse engineering' 카테고리의 다른 글
dreamhack : rev_basic_1 (2) | 2023.01.12 |
---|---|
dreamhack : rev_basic_0 (1) | 2023.01.10 |
easy_crackme1 (0) | 2023.01.07 |
rev_basic_0 (1) | 2022.11.02 |
writeup__easycrackme1 (0) | 2022.10.09 |