문제) Reversing Basic Challenge #1
이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여
correct 또는 wrong을 출력하는 프로그램이 주어집니다.
해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!
획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.
예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana}
chall1.exe 파일을 제공한다.
input을 받고 input 값과 chall0.exe 에 저장된 값이 같다면 FLAG를 확인할 수 있다.
리버스 엔지니어링을 위해 IDA를 사용하였다.
앞서 작성한 rev-basic-0 문제와 거의 흡사하다. 먼저 main 함수를 확인하였다.
main 함수는 동일하니, 어느 부분에서 문자열 비교가 일어나는지 로직을 확인해보았다.
이번에도 동일한 sub_140001000 함수에서 비교가 진행되는것을 확인할 수 있다.
이전 문제와 다른 부분은 문자열을 IF문의 중첩으로 한 글자씩 비교하는 방식이다.
IF문의 중첩으로 a1 배열에 있는 아스키 코드값을 순차적으로 비교하는 방식이다.
ASCII CODE : 67, 111, 109, 112, 97, 114, 51, 95, 116, 104, 101, 95, 99, 104, 52, 114, 97, 99, 116, 51, 114
이 아스키 코드를 영어로 변환하면 FLAG를 획득할 수 있다.
FLAG : Compar3_the_ch4ract3r