본문 바로가기
étude/reverse engineering

rev_basic_1

by mummoo 2022. 11. 2.

문제

이 문제는 사용자에게 문자열 입력을 받아

정해진 방법으로 입력값을 검증하여

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